我在批处理文件错误级别返回问题上苦苦挣扎,找不到答案。
任何人都可以给我任何提示吗?
我有一个外部二进制文件 external.exe,它读取批处理文件的返回码(0-成功,其他-失败)来决定要做什么。
在批处理文件 mybatch.cmd 中,我想运行一个脚本 (perl) 并将结果返回到批处理文件。
例如,mybatch.cmd:
@echo off
myperl.pl
exit %errorlevel%
虽然myperl.pl是:
#!perl.exe
exit 0;
所以我希望 myperl.pl 将值 0 返回到批处理文件,然后批处理文件将 0 返回到 external.exe 文件。
但是 external.exe 没有按预期工作。
1)如果我从 CLI 运行 mybatch.cmd,然后从 CLI 运行“echo %errorlevel%”,我可以看到它是 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)从 mybatch.cmd 返回到 external.exe。这会是个问题吗?