Windows @在cmd中回声消失
我正在尝试编写一个BAT脚本,我有以下几点:Windows @在cmd中回声消失,windows,cmd,echo,Windows,Cmd,Echo,我正在尝试编写一个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>
@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
My 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
)都被解释为重定向,因此echo 1>
显示为cmd
无参数的echo
echo
不带参数将打印当前的echo
状态(此处,echo处于关闭状态
)
要修复此问题,请使用^
字符转义整数:
echo ^1>> %PROG_ROOT\test.txt
或者将重定向移动到前端:
>%PROG\u ROOT%\test.txt echo%ONE%
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