#batch-file
#пакетный файл
Вопрос:
Пожалуйста, посмотрите на эти два файла BAT.
nest0.bat
@echo off
echo nest0 start.
call nest1.bat
echo nest0 done.
nest1.bat
@echo off
if 1 = 1 (
echo In nest1
)
echo nest1 done.
Запустите nest0.bat, и мы увидим этот результат:
nest0 start.
= was unexpected at this time.
Это ужасно. Синтаксическая ошибка в nest1.bat
приводит к тому, что остальные операторы в nest0.bat
полностью игнорируются, и весь пакетный поток немедленно останавливается.
Я надеюсь echo nest0 done
, что это может быть выполнено независимо nest1.bat
от успеха или неудачи. Есть способ добиться этого результата?
Если nest0.bat
можно продолжить выполнение, я могу использовать if ERRORLEVEL 1 (...)
технику для проверки nest0.bat
результата выполнения. Это будет очень приличный рабочий процесс.
Ответ №1:
Сам пакет не выдерживает фатальной ошибки.
Но вы можете запустить второй пакетный файл в отдельном cmd.exe процесс.
Заменить call nest1.bat
на cmd.exe /c nest1.bat
, вот и все
nest0.bat
@echo off
echo nest0 start.
cmd /c nest1.bat
echo nest1 done.
if %errorlevel% == 0 (
echo nest1 was successfully
) else (
echo nest1 failed
)