为什么我在尝试批量打印变量时会收到"Echo is on"

use*_*253 9 windows dos batch-file windows-7

我想要执行一个简单的批处理文件脚本:

echo %1
set var = %1
echo %var%
Run Code Online (Sandbox Code Playgroud)

当我在XP中运行它时,它给了我预期的输出,但当我在Vista或Windows 7中运行时,我在尝试打印(echo)值时得到"Echo is On".

以下是程序的输出:

G:\2012>abc.bat 1

G:\2012>echo 1
1

G:\2012>set var = 1

G:\2012>echo
ECHO is on.

G:\2012>
Run Code Online (Sandbox Code Playgroud)

C J*_*son 14

摆脱集合表达式中的空格.等号(=)的两边都可以而且不应该有空格

set var=%1
Run Code Online (Sandbox Code Playgroud)

BTW:我通常在@echo关闭的情况下启动所有批处理文件,并在@echo上结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.