在bash脚本中,我们可以找到各个命令的退出状态,这些命令是相互通信的 例如在下面的伪代码中:
$ command1 | command2 | command3
command1
,command2
&的退出状态command3
可以${PIPESTATUS[0]}
,${PIPESTATUS[1]}
&分别为${PIPESTATUS[2]}
。
此外,最后一个命令(在这种情况下为command3
)的退出状态可以从$?
获得。
对于Windows批处理脚本,我们可以使用%ERRORLEVEL%
找到最后一个命令的退出状态。因此,我想说,批处理脚本中最接近的$?
是%ERRORLEVEL%
。
批处理脚本中的PIPESTATUS
相当于什么?如何找到各个命令的退出状态?
答案 0 :(得分:3)
没有这样的动物。如果您想要个人状态,则需要
command1 >tempfile
set status1=%errorlevel%
command2 <tempfile >anothertempfile
set status2=%errorlevel%
command3 <anothertempfile
set status3=%errorlevel%
答案 1 :(得分:2)
我不相信,有一个直接的方法,但你可以写一个帮助批处理文件。
<强> pipe.bat 强>
@echo off
set pipeNo=%1
shift
call %1 %2 %3 %4 %5 %6 %7 %8 %9
> piperesult%pipeNo%.tmp echo %errorlevel%
然后你可以通过
来调用它pipe 1 command1 | pipe 2 command2 | pipe 3 command3
这将创建三个文件piperesult<n>.txt
,其中包含命令的结果。