我在这个批处理文件中的代码是有意义的,但它不能正常工作。

问题描述 投票:-1回答:2

所以我有一个小的批处理脚本,有两个选择。我挺难解释的,看看代码吧,有注释,会更容易理解。总之,只有当我使用第一个选择时,脚本才能正常工作。这是什么情况?

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
windows batch-file
2个回答
0
投票

我建议你使用内置的 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 /?. 例如,这将允许你用选定的参数启动你的可执行文件,并在等待可执行文件完成之前退出脚本。


0
投票

解决办法。

 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. 它就会经过两个选项。如果你选择了 "是",你就只经过 "是"。

© www.soinside.com 2019 - 2024. All rights reserved.