簡體   English   中英

批處理循環/輸出問題

[英]Batch loop/output issue

我很無聊,所以我嘗試編寫簡單的代碼,以生成一個文本文檔,該文檔包含從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

NICE :)當%number%在0或>>之前為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(,但初學者往往會感到困惑,並認為其中有不匹配的括號。

正如RGuggisberg所說 ,單位數字被解釋為意味着文件句柄(或流),其中0為stdin,1 stdout,2 stderr。 和3-9未定義。

echo.%number%>>%MyFile%可以使用,但這不是一般的解決方案。
類似echo.Test %number%>>%MyFile%將像以前一樣失敗。

最簡單的常規解決方案是在命令前移動重定向。

>>%MyFile% echo %number%

其他選項是在命令兩邊加上括號:

(echo %number%)>>%MyFile%

或轉義數字:

echo ^%number%>>%MyFile%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM