2015-02-07 127 views
0

我很無聊,所以我嘗試編寫簡單的代碼,生成一個從1開始的數字列表並生成一個文本文檔,並永遠計數。這裏的代碼在第一行顯示「Echo 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,單個數字的數字被解釋爲文件句柄(或流) ,1個標準輸出,2標準錯誤和3-9未定義。

echo.%number%>>%MyFile%將工作,但它不是一個通用的解決方案。
喜歡的東西echo.Test %number%>>%MyFile%將像以前一樣失敗。

最簡單通用的解決方案是移動重定向在命令之前。

>>%MyFile% echo %number% 

其他選項是把周圍的命令括號:

(echo %number%)>>%MyFile% 

或者逃避數量:

echo ^%number%>>%MyFile% 
2

NICE :) 當%數量%是0-9之前的>或>>它intepreted是一個數據流編號。所以當%數字%爲0時,你正在迴應STDIN ...,這相當於顯示ECHO狀態的ECHO。除非%數字%不是單個數字(不再被解釋爲流.. 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​

出於這個原因......這回送varaible可能是不確定的我從來沒有使用ECHO後面加一個空格的可能性。我總是使用ECHO(或者ECHO),純粹主義者更喜歡ECHO(但是初學者往往會感到困惑,並且認爲它們有不匹配的參數