Verwenden von Batch-Dateien, Teil 3: Der IF-Befehl
Dieser Tipp setzt die Serie über die Verwendung von Batch-Dateien fort. Es wird empfohlen, dass Sie die vorherigen Tipps (erneut) besuchen, damit wir dort weitermachen können, wo wir aufgehört haben. Bisher haben wir die folgenden Befehle behandelt: DIR, REM, ECHO, FIND, TIME und TIMEOUT. Wir haben auch die folgenden Operatoren verwendet: Ausgabe in Datei (>), Bemerkung (: :), kein Echo (@), Pipe (|) und Verketten (&).
Schließlich wissen wir, dass wir Parameter verwenden, die über die Kombinationen% 1,% 2,% 3 usw. an eine Batchdatei übergeben werden.
Dieser Tipp konzentriert sich auf Befehle, die sich auf die Durchführung der bedingten Verarbeitung in einer Batchdatei beziehen. Dazu gehören IF, CHOICE, GOTO und die spezielle Syntax von „: label“.
Ich habe eine sehr praktische Batch-Datei namens Do.bat. Es ist kaum mehr als ein „Wrapper“, der Programme ausführt, unabhängig davon, wo sich diese Programme befinden.
Wenn ich zum Beispiel das Programm Prog1.exe ausführen möchte, würde ich einfach
eingeben
C:\Bat> DO Prog1
Wenn ich Prog2.exe ausführen wollte, würde ich
eingeben
C:\Bat> DO Prog2
Das Schöne an Do.bat ist, dass ich bei der Erstellung die Speicherorte aller Programme eingegeben habe, mit denen es funktionieren soll. So muss ich mich beispielsweise nicht daran erinnern, dass Prog1.exe unter „C: \ Programme \ Meine Programme \ Prog1.exe“ und Prog2.exe unter „D: \ Utilities \ Barry \ Prog2.exe“ gespeichert ist. . Außerdem muss ich diese langen Pfadnamen nie wieder eingeben.
Meine Do.bat-Datei sieht folgendermaßen aus:
@ECHO OFF GOTO %1 :Prog1 "C:\Programs\My Programs\Prog1.exe" GOTO Done :Prog2 "D:\Utilities\Barry\Prog2.exe" GOTO Done :Done
Die erste Zeile der Datei stellt sicher, dass die anderen Zeilen nicht angezeigt werden. Darauf folgt die Zeile GOTO, die als Parameter den Namen des Etiketts verwendet, auf das das Steuerelement übertragen werden soll. Und so kommt es, dass dieses Label auch der Parameter ist, der zunächst an Do.bat übergeben wurde. Wenn Sie also Do.bat aufrufen und „Prog1“ als Parameter übergeben, führt die .bat-Datei ein GOTO für ein Label mit dem Namen „: Prog1“ aus (bei diesen wird nicht zwischen Groß- und Kleinschreibung unterschieden). Die Ausführung erfolgt nacheinander von oben nach unten, sodass der nächste auszuführende Befehl der Befehl ist, der Prog1.exe aufruft. Nach Abschluss dieses Programms wird die .bat-Datei fortgesetzt, indem der Befehl „GOTO Done“ ausgeführt wird. Das Label „: Done“ ist die letzte Zeile der Datei. Wenn es diesen Punkt erreicht, wird die .bat-Datei beendet. (Es gibt einen EXIT-Befehl, aber wenn wir diesen ausführen würden, würde er nicht nur die .bat-Datei, sondern auch die gesamte CMD-Sitzung beenden, was wahrscheinlich nicht das ist, was Sie tun möchten.)
Sie können alternativ den Befehl CHOICE verwenden und möglicherweise ein einfaches Menü erstellen, aus dem Sie auswählen können, welches Programm ausgeführt werden soll. In diesem Fall könnte ich eine Datei namens Choice.bat erstellen, die folgendermaßen aussehen würde:
@ECHO OFF ECHO Select 1 to run Prog1 ECHO Select 2 to run Prog2 ECHO Select Q to quit CHOICE /C 12Q /T 10 /D Q GOTO %ERRORLEVEL% :3 ECHO Quitting GOTO Done :2 "D:\Utilities\Barry\Prog2.exe" GOTO Done :1 "C:\Programs\My Programs\Prog1.exe" GOTO Done :Done
Der Befehl CHOICE gibt dem Benutzer die Aufforderung, eine 1, 2 oder Q einzugeben (standardmäßig wird nicht zwischen Groß- und Kleinschreibung unterschieden). Jedes andere Zeichen wird ignoriert. Der Schalter / T zeigt eine Zeitüberschreitung in 10 Sekunden an. Zu diesem Zeitpunkt verhält sich die Prozedur so, als ob die Option Q ausgewählt worden wäre (/ D Q sagt, dass die Standardoption Q ist). Nachdem der Befehl CHOICE ausgeführt wurde, wird die Variable% ERRORLEVEL% auf den Ordnungswert der ausgewählten Option gesetzt. Wenn der Benutzer 1 ausgewählt hat, wird% ERRORLEVEL% auf 1 gesetzt. Wenn der Benutzer 2 ausgewählt hat, wird% ERRORLEVEL% auf 2 gesetzt. und wenn der Benutzer Q ausgewählt hat, wird% ERRORLEVEL% auf 3 gesetzt. Wir erhalten dann die durch% ERRORLEVEL% angegebene Bezeichnung und führen die angeforderte Aktion aus.
Ich könnte einen ganzen Tipp zum IF-Befehl schreiben, aber die Grundlagen sind, dass Sie so etwas tun:
IF arg1 operator arg2 command
Während ‚arg1‘ und ‚arg2‘ Argumente sind, die getestet werden, ist ‚operator‘ eines von EQU, NEQ, LSS, LEQ, GTR, GEQ (dh EQUal, Not Equal, LeSS als usw.) und ‚command‘ ein Befehlszeilenbefehl.
Eine einfache Batch-Datei zum Echo von P1, falls vorhanden, könnte folgendermaßen aussehen:
@ECHO OFF IF [%1] EQU [] ECHO No Parameter passed IF [%1] NEQ [] ECHO Parameter P1 is '%1' GOTO:eof
(Ich habe mir angewöhnt, [] um meine Argumente herum zu verwenden, um bestimmte Komplikationen zu vermeiden.)
Es gibt auch andere Geschmacksrichtungen von IF. Sie können beispielsweise eine Fehlerstufe testen, testen, ob eine Datei vorhanden ist, eine ELSE-Anweisung einfügen usw.
Führen Sie in der Befehlszeile ein IF /? und Sie erhalten eine gute Vorstellung davon, was Sie alles tun können.
Dieser Tipp (13185) gilt für Windows 7, 8 und 10.