Alle anderen Antworten sind richtig: Anruf verwenden. Zum Beispiel:
call "msbuild.bat"
Geschichte
In alten DOS-Versionen war es nicht möglich, Batch-Dateien rekursiv auszuführen. Dann wurde der Aufrufbefehl eingeführt, der eine andere cmd-Shell aufrief, um die Batchdatei auszuführen, und die Ausführung nach Abschluss an die aufrufende cmd-Shell zurückgab.
Offensichtlich war in späteren Versionen keine andere cmd-Shell mehr erforderlich.
In den frühen Tagen hingen viele Batchdateien davon ab, dass das Aufrufen einer Batchdatei nicht zur aufrufenden Batchdatei zurückkehren würde. Das Ändern dieses Verhaltens ohne zusätzliche Syntax hätte viele Systeme wie Batch-Menüsysteme (Verwendung von Batch-Dateien für Menüstrukturen) beschädigt.
Wie in vielen Fällen bei Microsoft ist daher die Abwärtskompatibilität der Grund für dieses Verhalten.
Tipps
Wenn Ihre Batchdateien Leerzeichen enthalten, verwenden Sie Anführungszeichen um den Namen:
call "unit tests.bat"
Übrigens: Wenn Sie nicht alle Namen der Batch-Dateien haben, können Sie dies auch verwenden (dies garantiert nicht die korrekte Reihenfolge der Batch-Dateiaufrufe; es folgt der Reihenfolge des Dateisystems):
FOR %x IN (*.bat) DO call "%x"
Sie können auch nach einem Anruf auf Fehlerebenen reagieren. Verwenden:
exit /B 1 # Or any other integer value in 0..255
einen Fehlerlevel zurückgeben. 0 bedeutet korrekte Ausführung. In der aufrufenden Batch-Datei können Sie mit reagieren
if errorlevel neq 0 <batch command>
Verwenden if errorlevel 1
Sie diese Option, wenn Sie ein älteres Windows als NT4 / 2000 / XP haben, um alle Fehlerstufen 1 und höher abzufangen.
Um den Fluss einer Batch-Datei zu steuern, gehen Sie zu :-(
if errorlevel 2 goto label2
if errorlevel 1 goto label1
...
:label1
...
:label2
...
Wie andere betonten: Schauen Sie sich Build-Systeme an, um Batch-Dateien zu ersetzen.