Я полагаю, вы хотите что-то подобное?
@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 ):
@ эхо выключено
:: Получить параметры1
set "param1 =% globalparam1%"
Перейти: param1Проверить
: Param1Prompt
set / p "param1 = Ввести параметр 1:"
: Param1Check
if "% param1%" == "" goto: param1Prompt
:: Получить парам2
set "param2 =% globalparam2%"
перейти: param2Check
: Param2Prompt
set / p "param2 = Введите параметр 2:"
: Param2Check
если "% param2%" == "" перейти: 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
Примечание: установка переменных среды также может быть выполнена, например, в. вызывающий пакетный скрипт.