[英]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.