Die Batchprogrammierung - Einsteigerkurs Teil 2 Im ersten Teil des Einsteigerkurses fand leider nur eine sehr kurze Einfhrung statt, doch in diesem Teil wird mehr ver- raten. Ich habe nur die Vereinfachung von DOS-Befehlen erklrt, doch natrlich kann man mit der "Batch-Sprache" auch kleine Programme schreiben, so wie wir heute. Im folgenden wird ein kleines Programm dargestellt, das, sobald es gestartet ist, eine Abfrage darber durchfhrt, ob Windows gestartet werden soll. @ECHO OFF CLS ECHO Programm zum Starten von Windows ECHO. PAUSE CHOICE /C:JN "Soll Windows jetzt gestartet werden " IF ERRORLEVEL 2 GOTO ENDE C:\WINDOWS\WIN :ENDE CLS ECHO. Das wre unser Programm, geschrieben im MS-DOS Editor (Aufruf mit EDIT, siehe Kurs 1). Nun zur Erklrung: @ECHO OFF : Dieser Befehl besteht aus drei Komponenten, dem sogenannten Klammerffchen ( @ ), dem Befehl ( ECHO ) und sei- ner Funktion ( OFF ). Das Klammerffchen dient dazu, eine Zei- le vom DOS-Prompt verschwinden zu lassen. Wenn das Programm gestartet ist, wird diese Zeile also nicht auf dem Bildschirm ausgegeben, sondern nur intern bearbeitet. Diese Zeile sollte am Anfang jedes Batch-Programmes stehen. Das Wort ECHO ist auch ein Befehl und dient dazu, einen Text (String) auf dem Bildschirm auszugeben. Doch wird jetzt nicht der String OFF ausgegeben, sondern, da es sich dabei um eine Funktion von dem Befehl ECHO handelt, NUR die Ausgabe der Befehle(!) auf dem Bildschirm abgeschaltet. Somit knnen Strings immernoch ausgegeben werden. CLS : Da die Funktion ECHO OFF aufgerufen wurde, wird dieser Befehl nicht am Prompt ausgegeben, sondern nur intern abge- handelt. Es handelt sich dabei um den Befehl CLearScreen, der den Bildschirm lscht. ECHO Programm zum Starten von Windows : Der an ECHO berge- bene String ("Programm zum Starten von Windows") wird auf dem Bildschirm in der ersten Zeile (wg. CLS) ausgegeben. Wohlge- merkt NUR dieser String, da mit ECHO OFF die Befehlsausgabe abgeschaltet wurde. ECHO. : Das ist die Lsung der letzten Frage. Es wird eine Leerzeile auf dem Bildschrim ausgegeben. Dies ist mglich, da der Befehl ECHO (komischerweise) Sonderzeichen wie .,/\ oder + nicht an erster Stelle eines Strings darstellen kann. PAUSE : Wie es der Befehl schon sagt, wird eine Pause gemacht und auf einen Tastendruck des Anwenders gewartet. Es wird zu- gleich folgender String auf dem Bildschirm ausgegeben "Eine beliebige Taste drcken, um fortzusetzen" CHOICE /C:JN "Soll Windows jetzt gestartet werden " : Jetzt wird es interessant, denn dieser Befehl stellt sozusagen das Herzstck des Programmes dar. Hier wird die eigentliche Ab- frage gemacht, ob Windows gestartet werden soll. Der Befehl selbst heit nur CHOICE , doch an ihn knnen eine ganze Men- ge von "Parametern" bergeben werden. Da wre z.B. der Para- meter /C:JN . Durch ihn wird klargestellt, welche Auswahlmg- lichkeiten der Anwender hat, welche Tastem er also drcken darf und kann. In diesem Falle sind es die beiden Tasten "J" und "N". Wrde diese Parameter /C:JNV heien, kme die Taste "V" noch dazu. Diese Buchstaben werden in einer eckigen Klam- mer an den String bei Programmausfhrung angehngt ( [J,N] ). Der bergebene String heit in diesem Fall Soll Windows jetzt gestartet werden Er sollte in Anfhrungszeichen gesetzt werden, wobei zwischen String-Ende und letztem Anfhrungzeichen ein Leerzeichen ste- hen sollte, da die eckige Klammer mit den Auswahlmglichkeiten sonst DIREKT an den String angehngt wird, was nicht gut aus- sieht. Aber probiert's doch mal selbst aus. Wenn das Programm also an dieser Zeile angelangt ist, zeigt es folgendes auf dem Bildschirm Soll Windows jetzt gestartet werden [J,N]? Das Fragezeichen am Ende wird brigens bei Programmausfhrung automatisch angehngt. IF ERRORLEVEL 2 GOTO ENDE : Hier wird die Tasturabfrage ausge- wertet. Wichtig dabei ist die Umsetzung der Taste in eine Zahl. Die Zahl 1 entsprche dann der Taste "J", die Zahl 2 dem "N" und die Zahl 3 gbe es nicht. Wichtig dabei ist auch, da die Abfrage in ABSTEIGENDER(!) Reihenfolge durchgefhrt wird, also erst ERRORLEVEL 5, dann ERRORLEVEL 4, dann ERRORLEVEL 3 u.s.w. Der ERRORLEVEL stellt nur die Bezeichnung der Zahl dar, man nennt sie halt einfach ERRORLEVEL. Wenn also nun die Taste "N" ( -> 2 ) gedrckt wurde, soll der Programmablauf nach ENDE gehen. ENDE ist in diesem Fall eine Sprungmarke, die weiter unten spezifiziert ist und mit einem ":" beginnt. Frei bersetzt heit diese Zeile also Wenn die Taste "N" gedrckt worden ist, springe zur Sprung- marke ENDE. Sollte also nun die Taste "N" gedrckt worden sein, kommt das Programm ja nicht zur nchsten Zeile, also nicht zur Ausfh- rung von Windows, denn Windows wrde ja mit dem DOS-Befehl "C:\WINDOWS\WIN" gestartet werden. Doch das Programm ist ja schon bei ":ENDE". Wir sind den Startbefehl fr Windows also geschickt bersprungen, was ja auch unser Ziel war (weil Taste "N" gedrckt worden ist). :ENDE : Dies ist eine Sprungmarke, die angesprungen werden kann, wie eben gezeigt. Das mu sie aber nicht, denn wenn Windows im Falle der Taste "J" gestartet werden sollte und dann beendet werden sollte, gelangt das Programm automatisch an diese Sprungmarke, was aber keine Folgen fr den Ablauf des Programms hat. Eine Sprungmarke existiert somit nur, wenn sie bentigt wird. Zum Schlu wird der Bildschirm noch einmal gelscht und eine Leerzeile ausgegeben, damit auch alles mglichst sauber und wieder ordentlich aussieht. Hier noch einmal eine Art Diagramm fr das Programm Ŀ Befehlsausgabe ausschalten Bildschirminhalt lschen Ausgabe eines Strings Ausgabe einer Leerzeile Warten, bis Anwender eine Taste drckt Abfrage: Windows ? (J/N) Errorlevel-Abfrage (Umsetzung Zeichen -> Zahl) NeinĿ Ja Ausfhrung von Windows Sprung Sprungmarke :Ende Bildschirminhalt lschen Leerzeile ausgeben Besonders in dieser Abbildung sieht man, was mit dem in Kurs #1 bezeichneten Wort "Stapelverarbeitungs-Programm" gemeint ist: Immer eins nach dem anderen... Der groe Stapel wird abgearbeitet und immer kleiner, es sei denn, man baut einen Befehl namens GOTO START ein und deklariert am Anfang eine Sprungmarke namens :START. Dann springt das Pro- gramm nmlich immer wieder an die erste Stelle zurck und be- findet sich in einer Endlosschleife, aus der man (fast) nicht wieder rauskommt... Weiterhin gibt es zu jedem hier vorkommenden Befehl eine On-Line-Hilfe von DOS. Man gibt ein HELP [Befehl] und er- hlt dann weitere Informationen. Sehr hilfreich ! Ich hoffe, da diese zweite Einfhrung etwas aufschlureicher gewesen ist, wenn noch Fragen sein sollten, die sich auf dieses Programm beziehen, schreibt, schreibt, schreibt! Dieses Batch-Programm ist im Verzeichnis Progs unter dem Namen "WINSTART.BAT" abgespeichert. Probiert ruhig daran herum, es kann nichts schiefgehen... Eric der Schreckliche