Windows bat不返回右退出状态
我有两个bat文件。callexcode.cmd调用excode.cmd,它只调用不存在的文件“saurabh”。当我想在调用方中打印错误代码时(在本例中callexcode.cmd,我得到0,表示成功。但错误代码为1,因为没有名为“saurabh”的文件。我正在两个bat文件中打印退出代码。callie显示退出代码为1,而调用方显示退出代码为0。请任何人看一看,告诉我哪里出了问题。相反,我有什么原因出口代码被弄乱了吗Windows bat不返回右退出状态,windows,batch-file,cmd,dos,exit,Windows,Batch File,Cmd,Dos,Exit,我有两个bat文件。callexcode.cmd调用excode.cmd,它只调用不存在的文件“saurabh”。当我想在调用方中打印错误代码时(在本例中callexcode.cmd,我得到0,表示成功。但错误代码为1,因为没有名为“saurabh”的文件。我正在两个bat文件中打印退出代码。callie显示退出代码为1,而调用方显示退出代码为0。请任何人看一看,告诉我哪里出了问题。相反,我有什么原因出口代码被弄乱了吗 callExcode.cmd IF "%1"=="abc" ( SE
callExcode.cmd
IF "%1"=="abc" (
SET good=%2
)
IF /I "%good%" == "pqr" (
CALL exCode
echo ' in file callexcode, error level ret = %ERRORLEVEL%'
@EXIT /B %ERRORLEVEL%
)
excode.cmd
CALL saurabh
echo 'in file excode'
echo 'exit code %ERRORLEVEL%'
@EXIT /B %ERRORLEVEL%
输出
C:\docs>callExcode.cmd abc pqr
C:\docs>如果“abc”=“abc”(设置良好=pqr)
C:\docs>IF/I“pqr”=“pqr”(
呼叫交换码
echo'在文件callexcode中,错误级别ret=0'
)
C:\docs>呼叫saurabh
“saurabh”不被识别为内部或外部命令,
可操作的程序或批处理文件
C:\docs>echo“在文件excode中”
“在文件交换代码中”
C:\docs>echo“退出代码1”
“退出代码1”
'在文件callexcode中,错误级别ret=0'
提前谢谢
Saurabh当您在()中有代码时,解释器将其视为一行代码。环境变量在解析该行时展开,而不是在执行该行时展开。您可以通过在脚本顶部使用这行代码来解决此问题:
setlocal enableextensions enabledelayedexpansion
一旦你有了那条线,你就可以使用
!ERRORLEVEL!
而不是
%ERRORLEVEL%
环境变量名称的!而不是%表示“在执行代码行时,而不是在解析代码行时,展开此变量。”
账单