我正在尝试编写 BAT 脚本,并且我有以下内容:
@echo off
REM Comments here
SETLOCAL ENABLEDELAYEDEXPANSION
set PROG_ROOT=C:\Prog
set ONE=1
echo 1>> %PROG_ROOT\test.txt
echo %ONE%>> %PROG_ROOT\test.txt
for /f "tokens=*" %%f in (folders.txt) do (
echo %%f>> %PROG_ROOT\test.txt
)
ENDLOCAL
我的 folders.txt 包含数字“5”。
我的 test.txt 输出是
ECHO is off
ECHO is off
5
我不明白为什么前两行输出是“ECHO is off”,而第三行打印正确。如何打印正确的输出?
预计到达时间:我试过了
echo 1>> %PROG_ROOT\test.txt
echo %ONE% >> %PROG_ROOT\test.txt
而且我能够打印
ECHO is off
1
但是,我不需要打印数字后的尾随空格。
最佳答案
1>
(更普遍的是 n>
用于任何数字 n
)被解释为重定向,因此 echo 1 >>
在 cmd
中显示为不带参数的 echo
。不带参数的 echo
将打印当前的 echo
状态(此处,ECHO 已关闭
)。
要修复,请使用 ^
字符转义整数:
echo ^1>> %PROG_ROOT\test.txt
关于windows - @echo 在命令中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505754/