我有两个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,则会打印OK:
@echo off
if "YES" EQU "YES" (
cmd /C child.cmd
if %errorlevel% EQU 0 (
echo OK
) else (
echo ERROR
)
)
为什么在第二个例子中打印好了?
答案 0 :(得分:5)
在代码块中,您需要delayed expansion
才能访问%variables%
:
@echo off &setlocal enabledelayedexpansion
if !errorlevel! EQU 0 (
答案 1 :(得分:1)
您也可以使用此语法而不延迟扩展:
if errorlevel 1 if not errorlevel 2 ( echo error )