Windows 批处理文件的奇怪行为
我有两个cmd文件。 child.cmd: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
@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 )