如何解决 ECHO 已关闭。 (批次,蝙蝠)
How to solve ECHO is off. (batch, bat)
我是批处理新手。我试图将此回显到 txt,但我得到:ECHO 已关闭。在命令中。
SET /a _rand=(%RANDOM%*5/32768)+1
Set /a zmienna=%zmienna%-%_rand%
set kurczaki=%zmienna%
echo %kurczaki%> bin\DB\smth.txt
我尝试将 "zmienna" 更改为其他变量,但我仍然遇到同样的问题。预先感谢您的帮助。
如果您只是 运行 echo
而没有操作数,您会收到 ECHO is off/on
消息。这意味着,出于某种原因,您的 kurczaki
变量未设置为任何值。因此,您应该在设置每个变量后回显它以查看问题所在:
SET /a _rand=(%RANDOM%*5/32768)+1
echo .%_rand%.
Set /a zmienna=%zmienna%-%_rand%
echo .%zmienna%.
set kurczaki=%zmienna%
echo .%kurczaki%.
echo %kurczaki%> bin\DB\smth.txt
当我从命令行执行此操作时,当 >
重定向与您正在输出的内容不一致时,当那个东西可以用作文件句柄时会有所不同:
C:\Pax> set xx=7
C:\Pax> echo %xx%>zz.txt
ECHO is on.
C:\Pax> type zz.txt
<no output>
C:\Pax> echo %xx% >zz.txt
C:\Pax> type zz.txt
7<space>
所以我认为您的解决方案就是不这样做。在这种情况下发生的是 echo %xx%>zz.txt
被 完全 转换为:
echo 7>zz.txt
不是将7
发送到文件。相反,它将文件句柄 7
附加到该文件,然后,因为您的 echo
仅写入文件句柄 1
(标准输出),所以文件中没有任何内容。
此外,由于 %xx%
已被重定向吸收,不再有任何回显参数,因此您会收到 ECHO is off
消息。可以通过以下方式找到进一步的证据:
C:\Pax> set xx=1 7
C:\Pax> echo %xx%
1 7
C:\Pax> echo %xx%>zz.txt
1
7
被重定向吸收,只留下 1
。
但请注意,如果您不以某种方式进行操作,空格通常会进入输出。为此,我会将行更改为:
echo>bin\DB\smth.txt %kurczaki%
这应该确保输出文件中的变量周围没有空格,以及实际 写入 值到所述文件。
您的问题可能是因为您的结果也可能被混淆为重定向句柄,即(1>
、2>
等)。这可以通过您 echo
的方式轻松解决。
您还可以将四行代码简化为两行:
Set /A kurczaki=zmienna - ((%RANDOM% %% 5) + 1)
(Echo %kurczaki%) > bin\DB\smth.txt
或
Set /A kurczaki=zmienna - ((%RANDOM% %% 5) + 1)
> bin\DB\smth.txt Echo %kurczaki%
我是批处理新手。我试图将此回显到 txt,但我得到:ECHO 已关闭。在命令中。
SET /a _rand=(%RANDOM%*5/32768)+1
Set /a zmienna=%zmienna%-%_rand%
set kurczaki=%zmienna%
echo %kurczaki%> bin\DB\smth.txt
我尝试将 "zmienna" 更改为其他变量,但我仍然遇到同样的问题。预先感谢您的帮助。
如果您只是 运行 echo
而没有操作数,您会收到 ECHO is off/on
消息。这意味着,出于某种原因,您的 kurczaki
变量未设置为任何值。因此,您应该在设置每个变量后回显它以查看问题所在:
SET /a _rand=(%RANDOM%*5/32768)+1
echo .%_rand%.
Set /a zmienna=%zmienna%-%_rand%
echo .%zmienna%.
set kurczaki=%zmienna%
echo .%kurczaki%.
echo %kurczaki%> bin\DB\smth.txt
当我从命令行执行此操作时,当 >
重定向与您正在输出的内容不一致时,当那个东西可以用作文件句柄时会有所不同:
C:\Pax> set xx=7
C:\Pax> echo %xx%>zz.txt
ECHO is on.
C:\Pax> type zz.txt
<no output>
C:\Pax> echo %xx% >zz.txt
C:\Pax> type zz.txt
7<space>
所以我认为您的解决方案就是不这样做。在这种情况下发生的是 echo %xx%>zz.txt
被 完全 转换为:
echo 7>zz.txt
不是将7
发送到文件。相反,它将文件句柄 7
附加到该文件,然后,因为您的 echo
仅写入文件句柄 1
(标准输出),所以文件中没有任何内容。
此外,由于 %xx%
已被重定向吸收,不再有任何回显参数,因此您会收到 ECHO is off
消息。可以通过以下方式找到进一步的证据:
C:\Pax> set xx=1 7
C:\Pax> echo %xx%
1 7
C:\Pax> echo %xx%>zz.txt
1
7
被重定向吸收,只留下 1
。
但请注意,如果您不以某种方式进行操作,空格通常会进入输出。为此,我会将行更改为:
echo>bin\DB\smth.txt %kurczaki%
这应该确保输出文件中的变量周围没有空格,以及实际 写入 值到所述文件。
您的问题可能是因为您的结果也可能被混淆为重定向句柄,即(1>
、2>
等)。这可以通过您 echo
的方式轻松解决。
您还可以将四行代码简化为两行:
Set /A kurczaki=zmienna - ((%RANDOM% %% 5) + 1)
(Echo %kurczaki%) > bin\DB\smth.txt
或
Set /A kurczaki=zmienna - ((%RANDOM% %% 5) + 1)
> bin\DB\smth.txt Echo %kurczaki%