2015-02-07 77 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(但是初学者往往会感到困惑,并且认为它们有不匹配的参数