2012-09-20 37 views
8

Estoy tratando de escribir un guión MTD y tengo la siguiente:@ echo off en 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 

Mi folders.txt contiene el número "5".

Mi salida test.txt es

ECHO is off 
ECHO is off 
5 

No entiendo por qué las 2 primeras líneas de producción ha "eco está desactivada", mientras que la tercera línea se imprime correctamente. ¿Cómo imprimo la salida correcta?

ETA: Me trató

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

y yo era capaz de imprimir

ECHO is off 
1 

Sin embargo, necesito para no imprimir el espacio final después del número.

Respuesta

6

1> (y más generalmente n> para cualquier dígito n) se interpreta como una redirección, y por lo tanto echo 1>> parece cmd como un echo sin argumentos. echo sin argumentos imprimirá el estado actual echo (aquí, ECHO is off).

Para solucionar, escapar del número entero con un carácter ^:

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

eso es todo! ¡Gracias! – Rayne

+1

O mueva la redirección al frente: '>>% PROG_ROOT% \ test.txt echo% ONE%' – dbenham