Wie rufe ich ein anderes Batch-Skript innerhalb eines Batch-Skripts auf?
Ich möchte, dass es in einer if
Anweisung ausgeführt wird.
Wie rufe ich ein anderes Batch-Skript innerhalb eines Batch-Skripts auf?
Ich möchte, dass es in einer if
Anweisung ausgeführt wird.
Verwenden Sie CALL
wie in
CALL nameOfOtherFile.bat
Dadurch wird die Ausführung der aktuellen Batchdatei blockiert (angehalten) und es wird gewartet, bis die CALL
ed- Datei abgeschlossen ist.
Wenn Sie nicht möchten, dass es blockiert, verwenden Sie START
stattdessen.
Holen Sie sich die winzigsten Details durch die Verwendung CALL /?
oder START /?
von der Befehlszeile aus .
Sie können das Batch-Skript einfach nach Namen aufrufen, als würden Sie in der Befehlszeile ausgeführt.
Angenommen, Sie haben eine Datei mit bar.bat
der Aufschrift echo This is bar.bat!
und möchten sie aus einer Datei aufrufen. foo.bat
Sie können dies in Folgendes schreiben foo.bat
:
if "%1"=="blah" bar
Führen Sie foo blah
die Befehlszeile aus, und Sie werden sehen:
C:\>foo blah
C:\>if "blah" == "blah" bar
C:\>echo This is bar.bat!
This is bar.bat!
Aber Vorsicht : Wenn Sie ein Batch-Skript von einem anderen Batch-Skript aus aufrufen, wird das ursprüngliche Batch-Skript nicht mehr ausgeführt. Wenn Sie das sekundäre Batch-Skript ausführen und dann zum vorherigen Batch-Skript zurückkehren möchten, müssen Sie den call
Befehl verwenden. Beispielsweise:
if "%1"=="blah" call bar
echo That's all for foo.bat!
Wenn Sie darauf laufen foo blah
, würden Sie sehen:
C:\>foo blah
C:\>if "blah" == "blah" call bar
C:\>echo This is bar.bat!
This is bar.bat!
C:\>echo That's all for foo.bat!
That's all for foo.bat!
Sie sollten CALL verwenden
CALL batch.bat
call
wird die Ausführung auch mit einem Fehler fortgesetzt im aufgerufenen Skript.Hier ist ein Beispiel:
Sie haben a.bat:
und b.bat bedingt von a.bat aufgerufen:
quelle
Wenn Sie die Batchdatei in einem anderen Fenster öffnen möchten, verwenden Sie
start
. Auf diese Weise können Sie grundsätzlich zwei Skripte gleichzeitig ausführen. Mit anderen Worten, Sie müssen nicht auf das Skript warten, das Sie gerade aufgerufen haben, um fertig zu werden. Alle folgenden Beispiele funktionieren:Wenn Sie warten möchten, bis das Skript fertig ist, versuchen Sie es
start /w call batch.bat
, aber die Datei batch.bat muss mit endenexit
.quelle
Parallel in separaten Befehlsfenstern im minimierten Zustand ausführen
dayStart.bat
Nacheinander im selben Fenster ausführen
release.bat
quelle
huh, ich weiß nicht warum, aber call hat den Trick
call script.bat
nicht gemacht und ist nicht zur ursprünglichen Konsole zurückgekehrt.cmd /k script.bat
kehrte zur ursprünglichen Konsole zurück.quelle