繁体   English   中英

我需要使用批处理文件在回显关闭的情况下向文本文档回显十行。 文件已保存,但每一行都显示ECHO已关闭。 我的批处理文件是-

[英]I need to echo ten lines to a text document using a batch file with echo off. The file gets saved, but each line says ECHO is off. my batch file is-

@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

试图将它们回显到文件中我的复杂之处在于回显已关闭。 我需要把它关掉。

变量不应仅以数字命名。 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM