我有两个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,则会打印ERROR。
但是如果稍微改变一下parent.cmd,那么会打印出来:
@echo off if "YES" EQU "YES" ( cmd /C child.cmd if %errorlevel% EQU 0 ( echo OK ) else ( echo ERROR ) )
为什么OK在第二个例子中打印?
在一个代码块中,您需要delayed expansion
才能访问%variables%
:
@echo off &setlocal enabledelayedexpansion if !errorlevel! EQU 0 (
你也可以使用这个语法而不会延迟扩展:
if errorlevel 1 if not errorlevel 2 ( echo error )