2015-02-07 4 views
0

Мне было скучно, поэтому я попробовал написать простой код, который генерирует текстовый документ со списком чисел, начиная с 1 и рассчитывает навсегда. Этот код здесь говорит: «Echo is OFF» в первой строке, «10» на второй строке, «11» на третьем и т. Д. Почему он говорит, что «эхо выключено», и почему он не начинает отсчитывать от одного? Благодарю.Batch loop/output issue

set number=0 
echo %number%>numberlist.txt 
goto countloop 

:countloop 
cls 
echo The current number is %number% 
set /a number=%number%+1 
echo %number%>>numberlist.txt 
goto countloop 

ответ

1

Как RGuggisberg said, однозначные числа интерпретируются как средние дескрипторы файлов (или потоки), при этом 0 является stdin , 1 стандартный вывод, 2 STDERR. и 3-9 не определено.

echo.%number%>>%MyFile% будет работать, но это не является общим решением.
Нечто подобное echo.Test %number%>>%MyFile% потерпит неудачу, как и раньше.

Самое простое общее решение для перемещения перенаправление перед командой.

>>%MyFile% echo %number% 

Другие варианты поставить скобки вокруг команды:

(echo %number%)>>%MyFile% 

Или бежать номер:

echo ^%number%>>%MyFile% 
2

СЛАВНАЯ :) Когда% число% 0-9 предшествующего> или >> он intepreted быть номер потока. Таким образом, когда% number% равно 0, вы эхом отдаете STDIN ... что составляет ECHO, который отображает состояние ECHO. Вы не начнете эхом в файл до тех пор, пока% number% не станет чем-то вроде отдельной цифры (больше не будет интерпретироваться как поток ... STDIN, STDOUT, STDERR ...). Попробуйте сделать это следующим образом:

@echo off 
 
set /a number=0 
 
set MyFile=numberlist.txt 
 
if exist "%MyFile%" del /y "%MyFile%" 
 

 
:countloop 
 
echo The current number is %number% 
 
set /a number+=1 
 
echo.%number%>>"%MyFile%" 
 
goto countloop​

По этой причине ... и возможность того, что переспросил может быть Название переменной Неопределенные Я никогда не использую ЭХО с последующим пробелом. Я всегда пользуюсь ECHO (или ECHO). Пуристы предпочитают ECHO (но новички, как правило, путаются и думают, что есть несогласованные parens.