bat - 在txt文件中关闭ECHO

dav*_*vid 2 windows batch-file echo

:obje7
set gn=%random%
if /i %gn% lss 1 goto obje%go%
if /i %gn% gtr 5 goto obje%go%
set goal%gn%="test"
echo hi > goal%go%.txt
echo hi > g2.txt
goto go
Run Code Online (Sandbox Code Playgroud)

在目标%random_number%中设置测试,对吧?

(
echo %goal1%
echo %goal2%
echo %goal3%
echo %goal4%
echo %goal5%
) >> mcbingo.txt
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

 ECHO is off.
 test
 ECHO is off.
 test
 test
Run Code Online (Sandbox Code Playgroud)

并且所有:objeX是相同的代码,但是更改了X,g2.txt例如是g1.txt.

任何人都知道什么是错的?

And*_*y M 7

您的一些goal变量仍然未初始化.当您输出它们时,未初始化的变量计算为空字符串,相应的echo命令看起来像这样:

echo
Run Code Online (Sandbox Code Playgroud)

如果没有参数,则echo显示回显批处理命令到控制台的状态(何时ON显示,何时显示,OFF批处理时更常见,否则不显示).

要避免此行为并显示空字符串,请在echos和s 之间添加分隔符.你可以在这个位置使用多个分隔符,但是,从这个答案可以看出,最合适的是:%goal…%(

(
echo(%goal1%
echo(%goal2%
echo(%goal3%
echo(%goal4%
echo(%goal5%
) >> mcbingo.txt
Run Code Online (Sandbox Code Playgroud)