0

我制作了这个批处理文件,它工作正常,除了子菜单 4 重定向 ping 192.168.1.1 -n 1 -w !thyme! 到 NUL 而不是 echo ping 192.168.1.1 -n 1 -w !thyme!>NUL to %dir101%

@echo off & SETLOCAL EnableDelayedExpansion
title TXTanimation
set dir101=C:\USers\Jake\Desktop\file.bat
goto jakeinc
echo Lets make a text animation
pause
set /p dir101=where will the .bat be saved:
:jakeinc
echo @ECHO OFF > %dir101%
echo: >> %dir101%
:menu
echo 0=Edit important information
echo 1=Display .txt
echo 2=Play sound
echo 3=Close sound player
echo 4=Add nessicary wait between .txt
echo 5=Label point
echo 6=Edit variable
echo 7=Goto point
echo 8=Create IF sentence
echo 9=End it
Set /p choose=which one:

If '%choose%'=='0' (
SEt /p title=What is the title
:LOL101
set /p color=what color do you want type test to experiment with the colors
If '!color!'=='test' goto tester
goto model
:tester
SEt /p test=Please give hexadecimal number type exit to leave:
if '!test!'=='exit' goto LOL101
color !test!
goto tester
:model
echo title %title% >> %dir101%
echo color %color% >> %dir101%
goto menu
)

If '%choose%'=='1' (
set /p dir=what is the dir of your .txt:
)
If '%choose%'=='1' (
echo cls >> %dir101%
echo type %dir% >> %dir101%
goto menu
)
If '%choose%'=='4' (
SEt /p thyme=How much milliseconds 250 is usual:
echo ping 192.168.1.1 -n 1 -w !thyme!>NUL >> %dir101%
goto menu
)
If '%choose%'=='9' (
echo Thanks for making
pause
exit /b
)

是的,这是一个很大的程序,但我的错误很小。我可以键入模板并插入变量吗?但echo ping 192.168.1.1 -n 1 -w !thyme!>NUL >> %dir101%我需要它来说明要重定向的 >NUL

4

2 回答 2

1

当您尝试将这些命令回显到另一个批处理中时,您需要正确地转义这些命令。试试这个:

echo ping 192.168.1.1 -n 1 -w ^!thyme^!^>NUL >> %dir101%

将其写入您的%dir101%批处理中:

ping 192.168.1.1 -n 1 -w *value_of_thyme_variable* > NUL

批量转义大多数^功能。仅供参考:这不适用于%变量值。如果您需要%像这样转义变量值%test%,可以这样做:%%test%%,但正如您所见,它确实适用于!上面的变量值。

于 2012-04-13T17:30:51.890 回答
1

您只需要转义重定向符号,以便它得到回显而不是被解释为重定向。

echo ping 192.168.1.1 -n 1 -w !thyme! ^>NUL >>%dir101%

警告:您的子菜单 0 可以正常工作,但您可能正在养成一个坏习惯,将来会给您带来麻烦。通常不应将标签放在带括号的代码块内。阅读(Windows 批处理)Goto inside if 块的行为非常奇怪,以了解如何导致问题的示例,所选答案解释了为什么它会导致问题。

于 2012-04-13T17:51:29.950 回答