Antworten:
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
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:
start batch.bat
start call batch.bat
start cmd /c batch.bat
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 enden exit
.
dayStart.bat
start "startOfficialSoftwares" /min cmd /k call startOfficialSoftwares.bat
start "initCodingEnvironment" /min cmd /k call initCodingEnvironment.bat
start "updateProjectSource" /min cmd /k call updateProjectSource.bat
start "runCoffeeMachine" /min cmd /k call runCoffeeMachine.bat
release.bat
call updateDevelVersion.bat
call mergeDevelIntoMaster.bat
call publishProject.bat
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.
call
wird die Ausführung auch mit einem Fehler fortgesetzt im aufgerufenen Skript.