@MasterCopipaster

Как в bat файле игнорировать код ответа команды?

Доброе время суток, подскажите столкнулся со следующей проблемой.
У меня есть bat скрипт который накатывает обновления на сайте

@echo off
set /p is_migrate=Use migration?(Y/N):
@echo on
cd C:\inetpub\wwwroot
git  -c http.sslVerify=false fetch origin master
git merge origin/master
npm install
npm run build
composer update
composer dump-autoload --optimize
IF "%is_migrate%"=="Y" (
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console doctrine:migrations:diff & 
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console doctrine:migrations:migrate --no-interaction
)

"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console cache:clear
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console cache:warmup
pause


Но после отработки команды npm install он падает хотя команда отрабатывает нормально, немного поковырявшись я его поменял на
@echo off
set /p is_migrate=Use migration?(Y/N):
@echo on
cd C:\inetpub\wwwroot
git  -c http.sslVerify=false fetch origin master
git merge origin/master
npm install & npm run build & composer update & composer dump-autoload --optimize

IF "%is_migrate%"=="Y" (
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console doctrine:migrations:diff & 
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console doctrine:migrations:migrate --no-interaction
)

"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console cache:clear
"C:\Program Files\PHP\v7.4\php.exe" -f C:\inetpub\wwwroot\bin\console cache:warmup
pause


После чего он стал отрабатывать до команды

composer dump-autoload --optimize и останавливаться, что подтвердило что скорее всего команда при успешной работе возвращает не тот код который ожидает cmd.exe и считает что программа завершилась ошибкой хотя это не так.

Я попробовал сделать так

npm install & npm run build & composer update & composer dump-autoload --optimize & set ERRORLEVEL=0
но это не помогло, код все равно останавливается и не работает дальше.

Собственно как его заставить игнорировать коды ответа и продолжать работать во что бы то не было?
  • Вопрос задан
  • 368 просмотров
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
возвращает не тот код который ожидает cmd.exe и считает что программа завершилась ошибкой хотя это не так.
Интерпретатору командной строки всё равно как завершается программа. Код возврата в переменной %ERRORLEVEL%. У вас он не проверяется, значит просто composer зависает и не возвращает управление cmd.exe.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы