
 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


