29 windows batch-file batch-processing
批处理文件默认返回最后一个命令的错误代码.
是否有可能返回前一个命令的错误代码.最值得注意的是,是否可以在管道中返回命令的错误代码?
例如,这个单行批处理脚本
foo.exe
Run Code Online (Sandbox Code Playgroud)
返回foo的错误代码.但是这一个:
foo.exe | tee output.txt
Run Code Online (Sandbox Code Playgroud)
始终返回tee的退出代码,该代码为零.
我有一个类似的问题,并解决了以下解决方案,因为我不需要检测确切的错误代码只是成功或失败.
echo > .failed.tmp
( foo.exe && del .failed.tmp ) | tee foo.log
if exist .failed.tmp (
del .failed.tmp
exit /b 1
) else (
exit /b 0
)
Run Code Online (Sandbox Code Playgroud)
小智 3
一种解决方法是通过文件进行间接寻址。
像这样
foo.exe > tmp.txt
set FOOERR=%ERRORLEVEL%
cat tmp.txt
exit %FOOERR%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23576 次 |
| 最近记录: |