【发布时间】:2014-01-25 01:52:53
【问题描述】:
我在批处理文件错误级别返回问题上苦苦挣扎,但找不到答案。
任何人都可以给我任何提示吗?
我有一个外部二进制文件 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。这会是个问题吗?
【问题讨论】:
标签: perl batch-file return errorlevel