2012-09-20 9 views
8

Ich versuche, ein BAT-Skript zu schreiben und ich habe folgendes aus:@echo in DOS (cmd)

@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 

Meine folders.txt enthält die Nummer "5".

Mein test.txt Ausgang ist

ECHO is off 
ECHO is off 
5 

Ich verstehe nicht, warum die ersten zwei Zeilen der Ausgabe hat „ECHO ausgeschaltet ist“, während die dritte Zeile korrekt ausgedruckt wird. Wie drucke ich die richtige Ausgabe?

ETA: Ich habe versucht

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

und ich konnte

ECHO is off 
1 

jedoch drucken, muss ich die Leerzeichen nach der Anzahl nicht drucken.

Antwort

6

1> (und allgemeiner für jeden n> digit n) als eine Umleitung interpretiert, und somit scheint echo 1>>cmd als echo ohne Argumente. echo ohne Argumente wird den aktuellen echo Zustand (hier, ECHO is off) drucken.

zu beheben, die Flucht der ganze Zahl mit einem ^ Charakter:

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

Das ist es! Vielen Dank! – Rayne

+1

Oder verschieben Sie die Umleitung nach vorne: '>>% PROG_ROOT% \ test.txt echo% ONE%' – dbenham