Windows Batch-Programmierung AUGE-Vortrag Frankfurt am 2004-11-20 Reinhold Weniger, Essen / Ruhr E-Mail: [email protected] 1 Windows Batch-Programmierung Warum Batches? Die Command-Shell cmd.exe ist immer vorhanden Alternative Windows scripting host (WSH) Aus Sicherheitsgründen häufig nicht installiert Perl Kann Eventlog exportieren etc. Registry-Bearbeitung möglich 2 Windows Batch-Programmierung Voraussetzungen Windows 95 ff nur eingeschränkt kein Scrollen im Kdo-Fenster einige Reskit-Kdos nicht möglich Windows NT, 2000, XP ResKit (NT, 2000, XP) nützlich: Kommdos kill, tlist etc. Help in w2rktool.chm (Windows 2000) 3 Windows Batch-Programmierung Vorbereitung Link für "Eingabeaufforderung" auf Desktop s.u. Diesen als Command-Shell öffnen Im Kontextmenü Eigenschaften ändern QuickEdit-Modus ankreuzen Einfügemodus ankreuzen Breite 80 oder 132 Zeichen Fensterhöhe 40..60 Zeilen Scrollhöhe z.B. 5000 Zeilen (max. 9999) Speichern für Verknüpfung (permanent) oder für aktuelles Fenster (temporär) 4 Windows Batch-Programmierung Hilfe NT> help DOS-Kdos und Neueres aus NT alles 32-Bit Programme Syntax für Batch-Komponenten NT> help IF NT> help FOR NT> help CALL 5 Windows Batch-Programmierung Batch-Parameterübergabe NT> mein_batch.bat par1 par2 ... parN rem mein_batch.bat rem Übergabe-Parameter echo %0 :: Scriptname mit Pfad echo %1 :: 1. Parameter .. echo %9 :: 9. Par shift :: nächste Ebene echo %9 :: 10. Par shift echo %9 :: 11. Par 6 Windows Batch-Programmierung Umgebungs-Variablen Cmd-Shell erbt Env des Aufrufers set :: Environment anzeigen echo %username% :: Variable anzeigen set A="aaa" :: neue Variable setzen cmd.exe :: 2. Shell aufrufen echo %A% set B="bbb" echo %B% exit echo %B% :: :: :: :: :: zeigt "aaa" oben unbekannt zeigt "bbb" 2. Shell verlassen 1. Shell: B ist unbekannt 7 Windows Batch-Programmierung Begrenzung der Env-Änderungen NT> set MyVar="xxx" NT> call UP1 rem UP1: offizieller Kommentar :: auch Kommentar, undokumentiert aber viel schneller setlocal :: globale MyVar von oben wird hier nicht zerstört! set MyVar="yyy" endlocal Dateiende wirkt wie Return Durch endlocal wird oben der Wert "xxx" wieder hergestellt! 8 Windows Batch-Programmierung Arithmetische Ausdrücke NT> set /A MyVar=2*4+1 /A steht für "arithmetische Option". Dieses ist offiziell nicht dokumentiert, wird im Internet aber überall beschrieben. 9 Windows Batch-Programmierung UP-Parameterrückgabe NT> set gbl_result=0 call mul_demo echo %gbl_result% :: zeigt 8 rem mul_demo :: setlocal verboten set /A gbl_result=2*4 :: endlocal verboten 10 Windows Batch-Programmierung Fehlerbehandlung format a: /s if not errorlevel 1 goto ENDE echo Bei der Formatierung ist ein Fehler aufgetreten. exit 4711 :ENDE exit 0 Errorlevel ist NICHT sinnvoll bei komplexen Programmen: SQL-Statements (Oracle SQLplus) Aufruf eines C-Compilers Aufruf von FTP 11 Windows Batch-Programmierung Konvention bei Kunden Client-Rechner: Server: Folge => Windows-NT ff "deutsch" Windows-NT ff "US-englisch" "c:\program files"\BatAG\SuperBat\sql\web_export.sql = "c:\program files\BatAG\SuperBat\sql"\web_export.sql = "c:\program files\BatAG\SuperBat\sql\web_export.sql" ??? Auflösung: Sie sind i.a. nicht gleich! Sollte man Micky Kleinweich hauen? 12 Windows Batch-Programmierung Praktische Beispiele Prozess "abschiessen" Ablaufsteuerung eines Edigas-Systems FTP-Übertragung für Web-Interface Alternativen 13