Мой код в этом командном файле имеет смысл, но он не работает должным образом - PullRequest
0 голосов
/ 07 мая 2020

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

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

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

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

Чтобы прочитать информацию об использовании команды в Command Введите окно подсказки choice /? и нажмите ENTER

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

0 голосов
/ 07 мая 2020

Решение:

 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

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

...