Windows bat-ECHO在txt文件中处于关闭状态

Windows bat-ECHO在txt文件中处于关闭状态,windows,batch-file,echo,Windows,Batch File,Echo,这就设定了目标%random_number%的测试,对吗 :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 我得到的结果是: ( echo %goal1% echo %goal2% echo %goal3% echo %goal4

这就设定了目标%random_number%的测试,对吗

: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
我得到的结果是:

(
echo %goal1%
echo %goal2%
echo %goal3%
echo %goal4%
echo %goal5%
) >> mcbingo.txt
所有的:objeX都是相同的代码,但是改变了X,例如g2.txt就是g1.txt


有人知道出了什么问题吗?

您的一些
目标
变量仍然未初始化。输出时,未初始化的变量计算为空字符串,相应的
echo
命令如下所示:

 ECHO is off.
 test
 ECHO is off.
 test
 test
在没有参数的情况下,
echo
显示将批处理命令回显到控制台的状态(当
打开时,这些命令显示;当
关闭时,这些命令不显示,这在批处理中更为典型)

要避免此行为并显示空字符串,请在
echo
s和
%goal…%%
s之间添加分隔符。您可以在该位置使用许多分隔符,但如下所示,
似乎最合适:

echo

该环境不包含goal1和goal3变量。因此,echo命令只是简单的“echo”,没有参数。这是使用random时的预期结果。多次运行.bat文件以获得更多定义的变量。哦,好的,我看到了问题。如果goal1=*goto objeX,我可以这样做吗
(
echo(%goal1%
echo(%goal2%
echo(%goal3%
echo(%goal4%
echo(%goal5%
) >> mcbingo.txt