2012-09-20 86 views
8

我試圖寫一個BAT劇本,我有以下幾點:在DOS(CMD)關閉@echo

@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 

我不理解爲什麼第一2線輸出的已「ECHO是關斷」,而第三線路被正確地打印出來。如何打印正確的輸出?

ETA:我試過

echo 1>> %PROG_ROOT\test.txt 
echo %ONE% >> %PROG_ROOT\test.txt 

,我能夠打印

ECHO is off 
1 

不過,我需要的號碼後不打印尾部空間。

回答

6

1>(並且更一般地爲n>任何數字n)被解釋爲重定向,因此echo 1>>似乎cmd作爲echo沒有參數。不帶參數的echo將打印當前的echo狀態(這裏是ECHO is off)。

要解決,逃避整數與^字符:

echo ^1>> %PROG_ROOT\test.txt 
+0

這就是它!謝謝! – Rayne

+1

或者將重定向移到前面:'>>%PROG_ROOT%\ test.txt echo%ONE%' – dbenham