0

我有两个 bat 文件。callexcode.cmd 调用 excode.cmd,它只是调用不存在的文件 'saurabh'。当我想在调用者中打印错误代码时(在本例中为 callexcode.cmd,我得到 0 表示成功。但错误代码为 1,因为没有名为“saurabh”的文件。我正在打印退出两个bat文件中的代码。callie显示退出代码为1,而调用者显示退出代码为0。任何人都可以看看,让我知道我哪里出错了。退出代码是否有任何原因弄乱。

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>IF "abc" == "abc" (SET good=pqr)

C:\docs>IF /I "pqr" == "pqr" ( CALL exCode echo ' 在文件 callexcode 中,错误级别 ret = 0'

)

C:\docs>CALL saurabh 'saurabh' 不是内部或外部命令、可运行程序或批处理文件。

C:\docs>echo 'in file excode' 'in file excode'

C:\docs>echo 'exit code 1' 'exit code 1' ' in file callexcode, error level ret = 0'

提前致谢!

索拉布

4

1 回答 1

1

当您在( )中有代码时,解释器认为这是一行代码。环境变量在解析行时展开,而不是在执行时展开。您可以通过在脚本顶部使用这行代码来解决此问题:

setlocal enableextensions enabledelayedexpansion

一旦你有了那条线,你就可以使用

!ERRORLEVEL!

代替

%ERRORLEVEL%

_ 而不是%来命名环境变量名称意味着“在执行代码行时扩展此变量,而不是在解析时。”

账单

于 2013-04-10T02:28:35.790 回答