Итак, у меня есть небольшой пакетный скрипт, который имеет два варианта. Мне сложно объяснить это, просто посмотрите на код, в нем есть комментарии, и это будет легче понять. В любом случае, скрипт работает правильно, только если я использую первый выбор. В чем дело?

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
-1
computationalprince 7 Май 2020 в 12:39

2 ответа

Лучший ответ

Я бы предложил использовать встроенную команду 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 /? и нажмите ENTER

В зависимости от ваших обстоятельств вы также можете повторить процесс, используя start /?. Это позволит вам, например, запустить свой исполняемый файл с выбранным аргументом и выйти из сценария, прежде чем ждать завершения исполняемого файла

0
Compo 7 Май 2020 в 12:41

Решение:

 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

Просто поставьте выход после того, как нет выбора. Если вы не закончите свое приложение, оно перейдет к: args. Так что в вашем случае, если вы выбираете нет. Это идет через оба варианта. Если вы выбираете «да», вы идете только через «да».

0
XraySensei 7 Май 2020 в 09:58