所以我有一个小的批处理脚本,有两个选择。我挺难解释的,看看代码吧,有注释,会更容易理解。总之,只有当我使用第一个选择时,脚本才能正常工作。这是什么情况?
echo Do you want to use arguments from the arguments text file? yes/no
set argumentstxt=+args.txt &:: This variable will contain the argument that tells the program to use arguments from the text file.
set /p answer=
if %answer% == yes goto :args
if %answer% == no goto :noargs
:noargs
set argumentstxt=-c 9999 &:: If I answered "no" then this line changes the first variable to do a different thing with the program. But if I answered yes then this line is completely ignored and the script goes to :args
:args
"C:\My program.exe" %argumentstxt%
exit
我建议你使用内置的 choice
命令,用于请求已知的输入。
例如,在命令提示符窗口中输入
@Echo Off
Set "argumentstxt=-c 9999"
"%__AppDir__%choice.exe" /M "Do you want to use arguments from the arguments text file"
If Not ErrorLevel 1 Set "argumentstxt=+"args.txt""
"C:\My program.exe" %argumentstxt%
要读取命令的使用信息,在命令提示符窗口中输入: choice /?
,然后按 进入
根据您的情况,您也可以使用以下方法重复这一过程。start /?
. 例如,这将允许你用选定的参数启动你的可执行文件,并在等待可执行文件完成之前退出脚本。
解决办法。
echo Do you want to use arguments from the arguments text file? yes/no
set argumentstxt=+args.txt &:: This variable will contain the argument that tells the program to use arguments from the text file.
set /p answer=
if %answer% == yes goto :args
if %answer% == no goto :noargs
:noargs
set argumentstxt=-c 9999 &
exit
:args
"C:\My program.exe" %argumentstxt%
exit
在no选项后面加上exit就可以了 如果你没有完成你的应用程序,它将会转到:args。所以在你的情况下,如果你选择no. 它就会经过两个选项。如果你选择了 "是",你就只经过 "是"。