我需要使用带有echo off的批处理文件将十行回显到文本文档。该文件已保存,但每行都显示ECHO已关闭。我的批处理文件是 -

时间:2015-01-04 18:05:22

标签: windows batch-file

@echo off  
color a    
:ini  
set /p  1= %random%    
set /p  2= %random%   
set /p  3=  %random%  
set /p  4=  %random%  
set /p  5=  %random%  
set /p  6=  %random%  
set /p  7=  %random%  
set /p  8=  %random%  
set /p  9=  %random%  
set /p  10=  %random%

设置随机数

(  

echo %1%  
echo %2%  
echo %3%  
echo %4%  
echo %5%  
echo %6%  
echo %7%  
echo %8%  
echo %9%  
echo %10%  
)>file.txt

尝试将它们回显到文件中 我的并发症是回声已关闭。 我需要它关闭。

1 个答案:

答案 0 :(得分:1)

不应将变量命名为数字。 Per dbenham的评论如下:

  

%1%被解释为碰巧的%1(第一个脚本参数)   在这种情况下是未定义的,后面是一个单独的%   消耗。通常,您不应该使用名称定义变量   以数字开头。但是如果使用,你可以访问这些变量   延迟扩张 - %1%不起作用,但是!1!确实有效。

因此,在您的情况下,解析器遇到无效变量(例如%1%),因此它只处理ECHO命令,如果ECHO打开或关闭,它只会输出。

除了您尝试使用随机数作为提示文本提示输入10个值之外,您的脚本似乎有点失效。

如果您只需输出10个随机数,则可以使用FOR循环“优雅地”执行此操作:

@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET FileName=file.txt
SET NumberOfValues=10

REM Remove existing file if it exists.
IF EXIST "%FileName%" DEL "%FileName%"

FOR /L %%A IN (1,1,%NumberOfValues%) DO ECHO !RANDOM!>>file.txt

ENDLOCAL

或者,一个更成功的方法是这个单行程,您可以在Windows命令提示符中直接运行(不需要批处理文件):

CMD /V:ON /C FOR /L %A IN (1,1,10) DO @ECHO !RANDOM!>file.txt