Windows Batch-Programmierung

Werbung
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
Herunterladen