Я борюсь за ошибку с возвратом ошибок в пакетном файле и не могу найти ответ.
Может ли кто-нибудь дать мне какие-нибудь подсказки?ошибка командного файла errorlevel дважды
У меня есть внешний двоичный файл, external.exe, который считывает код возврата (0-success, other-fail) командного файла, чтобы решить, что делать.
В пакетном файле mybatch.cmd я хотел запустить скрипт (perl) и вернуть результат в пакетный файл.
Например, mybatch.cmd:
@echo off
myperl.pl
exit %errorlevel%
Хотя myperl.pl является:
#!perl.exe
exit 0;
Так что я хотел myperl.pl вернуть значение 0 в пакетном файле, а затем командный файл возвращает 0 в файл external.exe.
Но внешний.exe не работает должным образом.
1) Если я бегу mybatch.cmd из CLI, а затем "эхо% ERRORLEVEL%" от CLI, я мог видеть это 0.
2) Если добавить строку для отображения код возврата myperl.pl, я мог видеть код возврата myperl.pl именно 0.
Например:
@echo off
myperl.pl
echo %errorlevel%
REM exit %errorlevel%
Он будет отображать 0, поэтому сценарий Perl возвращает значение точно.
3) Если я добавлю строку, чтобы вручную установить код возврата в 0, файл external.exe работает нормально.
@echo off
myperl.pl
result=0
exit %result%
Это действительно странно. Есть идеи? Я не мог контролировать файл external.exe, поэтому я не мог отлаживать его.
В этом примере,% ErrorLevel% вызывается дважды:
1) Возвращение из myperl.pl к партии.
2) Возврат from mybatch.cmd к external.exe. Будет ли это проблемой?
спасибо @Aacini. В документации указано, что «external.exe считывает возвращаемое значение mybatch.cmd и 0-success, other-failure». И если я вручную установил код возврата как 0 или 1 в пакетном файле, например. «set result = 0», а затем «exit% result%», external.exe работает хорошо, как ожидалось. Проблема в том, что мне нужно установить значение в файле perl вместо командного файла. – user1748640