Ответ 1
Я считаю, что вы хотите что-то вроде этого?
@echo off
:: Fetch param1
set "param1=%~1"
goto :param1Check
:param1Prompt
set /p "param1=Enter parameter 1: "
:param1Check
if "%param1%"=="" goto :param1Prompt
:: Fetch param2
set "param2=%~2"
goto :param2Check
:param2Prompt
set /p "param2=Enter parameter 2: "
:param2Check
if "%param2%"=="" goto :param2Prompt
:: Process the params
echo param1=%param1%
echo param2=%param2%
Test.bat запускается без аргументов:
>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar
Test.bat запускается с аргументами:
>>test.bat foo bar
param1=foo
param2=bar
Альтернатива, используя переменные окружения вместо аргументов командной строки (см. также ответ ppumkin):
@echo off
:: выборка param1
установить "param1 =% globalparam1%"
goto: param1Check
: Param1Prompt
set/p "param1 = Введите параметр 1:"
: Param1Check
если "% param1%" == "goto: param1Prompt:: Fetch param2
установить" param2 =% globalparam2% "
goto: param2Check
: Param2Prompt
set/p" param2 = Введите параметр 2: "
: Param2Check
если" % param2% "==" " goto: param2Prompt:: Обработать параметры
echo param1 =% param1%
echo param2 =% param2%
Просто установите переменные окружения globalparam1
и globalparam2
в вашей среде или ваш пакетный файл вызова для подавления запроса:
Test.bat выполняется без установки переменных среды:
>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar
Test.bat запускается с переменными среды установки:
>>set globalparam1=foo
>>set globalparam2=bar
>>test
param1=foo
param2=bar
Примечание: установка переменных среды также может быть выполнена, например. вызывающая партия script.