Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件的奇怪行为_Windows_Batch File_Cmd - Fatal编程技术网

Windows 批处理文件的奇怪行为

Windows 批处理文件的奇怪行为,windows,batch-file,cmd,Windows,Batch File,Cmd,我有两个cmd文件。 child.cmd: @echo off exit 1 parent.cmd: @echo off cmd /C child.cmd if %errorlevel% EQU 0 ( echo OK ) else ( echo ERROR ) 如果要运行parent.cmd,则会打印错误 但如果稍微更改parent.cmd,则会打印OK: @echo off if "YES" EQU "YES" ( cmd /C child.cmd if %err

我有两个cmd文件。 child.cmd:

@echo off
exit 1
parent.cmd:

@echo off
cmd /C child.cmd
if %errorlevel% EQU 0 (
   echo OK
) else (
   echo ERROR
)
如果要运行parent.cmd,则会打印错误

但如果稍微更改parent.cmd,则会打印OK:

@echo off
if "YES" EQU "YES" (
   cmd /C child.cmd
   if %errorlevel% EQU 0 (
      echo OK
   ) else (
      echo ERROR
   )
)

为什么在第二个示例中打印OK?

在代码块内,您需要
延迟扩展
才能访问
%variables%

 @echo off &setlocal enabledelayedexpansion
 if !errorlevel! EQU 0 (

您也可以在不延迟扩展的情况下使用此语法:

if errorlevel 1 if not errorlevel 2 ( echo error )