Wszystkie pozostałe odpowiedzi są poprawne: użyj połączenia. Na przykład:
call "msbuild.bat"
Historia
W starożytnych wersjach DOS rekurencyjne wykonywanie plików wsadowych było niemożliwe. Następnie wprowadzono polecenie call, które wywołało kolejną powłokę cmd w celu wykonania pliku wsadowego i po zakończeniu zwróciło wykonanie z powrotem do wywołującej powłoki cmd.
Oczywiście w późniejszych wersjach żadna inna powłoka cmd nie była już potrzebna.
Na początku wiele plików wsadowych zależało od tego, że wywołanie pliku wsadowego nie powróci do wywoływanego pliku wsadowego. Zmiana tego zachowania bez dodatkowej składni spowodowałaby uszkodzenie wielu systemów, takich jak systemy menu wsadowego (używanie plików wsadowych do struktur menu).
Dlatego, podobnie jak w wielu przypadkach z Microsoftem, zgodność z poprzednimi wersjami jest przyczyną tego zachowania.
Porady
Jeśli pliki wsadowe mają spacje w nazwach, użyj cudzysłowów wokół nazwy:
call "unit tests.bat"
Nawiasem mówiąc: jeśli nie masz wszystkich nazw plików wsadowych, możesz również użyć do tego (nie gwarantuje to prawidłowej kolejności wywołań plików wsadowych; postępuje zgodnie z kolejnością systemu plików):
FOR %x IN (*.bat) DO call "%x"
Możesz także reagować na poziomy błędu po połączeniu. Posługiwać się:
exit /B 1 # Or any other integer value in 0..255
zwrócić poziom błędu. 0 oznacza prawidłowe wykonanie. W wywoływanym pliku wsadowym możesz zareagować za pomocą
if errorlevel neq 0 <batch command>
Użyj, if errorlevel 1
jeśli masz starszy system Windows niż NT4 / 2000 / XP, aby wyłapać wszystkie poziomy błędu 1 i wyższe.
Aby kontrolować przepływ pliku wsadowego, jest goto :-(
if errorlevel 2 goto label2
if errorlevel 1 goto label1
...
:label1
...
:label2
...
Jak zauważyli inni: spójrz na systemy kompilacji zastępujące pliki wsadowe.