windows - 批处理文件的奇怪行为

标签 windows batch-file cmd

我有两个 cmd 文件。 子命令:

@echo off
exit 1

父命令:

@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
   )
)

为什么第二个例子打印的是OK?

最佳答案

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

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

关于windows - 批处理文件的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18698609/

相关文章:

c - 从一个函数传递到另一个函数的值发生变化......无法弄清楚为什么?

batch-file - 文件路径中有空白空间的 Batch-Hell

batch-file - 使用来自bat文件的curl http post发送多个文件

mysql - 从 cmd 窗口获取上一个显示的输出

command-line - 窗口命令 : How to pipe running program output to FINDSTR and write to file

将 C 代码编译成与 WinXP 和 Win7 兼容的单个可执行文件

c++ - 使用 RAII 启动 WSA

python - `pip install --upgrade pip` 在带有 "Access denied"的 Windows virtualenv 中失败

string - 基于文件名的批量移动,不带分隔符,仅字符串

php - 从 php system() 函数获取完整输出