2015-02-07 4 views
0

저는 지루했기 때문에 1부터 시작하는 숫자 목록을 가진 텍스트 문서를 생성하고 영원히 카운트하는 간단한 코드를 작성하려고했습니다. 이 코드는 첫 번째 줄에는 "Echo is OFF", 두 번째 줄에는 "10", 세 번째 줄에는 "11"이 표시됩니다. 왜 그것은 "에코가 꺼져있다"라고 말하며 왜 하나에서 세기 시작하지 않는가? 감사.일괄 처리 루프/출력 문제

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은 표준 입력 1 개 표준 출력, 2 열려진. 및 정의 3-9.

echo.%number%>>%MyFile%은 작동하지만 그것은 일반적인 해결책이 아니다. 이전과 실패
뭔가 echo.Test %number%>>%MyFile%처럼.

간단한 일반적인 솔루션은 이동하는 것입니다 명령 앞에 리디렉션.

>>%MyFile% echo %number% 

다른 옵션은 명령 괄호를 넣어 있습니다 :

(echo %number%)>>%MyFile% 

또는 숫자 탈출 :

echo ^%number%>>%MyFile% 
2

NICE :) % 번호 0-9 %가 선행> 또는 >> 스트림 번호로 해석하여된다. 따라서 % 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, ECHO를 선호하지만, 초심자는 혼란스럽고 짝이 맞지 않는 경향이있다.)