Creo que usted quiere algo como esto?
@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%
Prueba.bat ejecuta sin argumentos:
>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar
prueba.plazo bate con argumentos:
>>test.bat foo bar
param1=foo
param2=bar
alternativa, el uso de variables de entorno en lugar de argumentos de línea de comando (véase también ppumkin's answer):
@echo off
:: Fetch param1
conjunto "param1 =% globalparam1%"
goto: param1C diablos
: param1Prompt
set/p "param1 = Introduzca parámetro 1:"
: param1Check
si "% param1%" == "" goto: param1Prompt
:: Fetch param2
set " param2 =% globalparam2%"
Goto: param2Check
: param2Prompt
set/p "param2 = Introduzca parámetro 2:"
: param2Check
si "% param2%" == "" Ir a: param2Prompt
:: Proceso de los params
Echo param1 =% param1%
eco param2 =% param2%
Sólo hay que establecer las variables de entorno globalparam1
y globalparam2
en su entorno o su archivo por lotes llamando a reprimir el impulso:
Prueba.bat ejecutar sin establecer las variables de entorno:
>>test.bat
Enter parameter 1: foo
Enter parameter 2: bar
param1=foo
param2=bar
Prueba.bat ejecuta con las variables de entorno de ajuste:
>>set globalparam1=foo
>>set globalparam2=bar
>>test
param1=foo
param2=bar
Nota: establecer las variables de entorno también se puede hacer, por ejemplo, en una secuencia de comandos por lotes.
Esto es genial, pero la pregunta era cómo establecer variables globales en otro lote, de modo que si ejecuta un lote completamente diferente, pueda recogerlas del entorno global en función del código de muestra. ¿no? – ppumkin
Arriba, mi respuesta a la pregunta, de acuerdo con mi comprensión de lo que desea el OP, dada la formulación de la pregunta y los comentarios sobre las otras respuestas ... El archivo de proceso por lotes "* puede invocarse por sí mismo donde se me solicita [I] para los parámetros * "mientras se mantiene la capacidad de" * llamar este archivo por lotes de otro y pasar los valores de los parámetros al archivo de proceso por lotes anterior, y al usuario no se le solicitará la entrada * " – mousio
@ppumkin: Puede llamar a mi archivo por lotes desde otro y pasar los parámetros en la línea 'call'. Su enfoque parece ser llamar al archivo por lotes desde otro y pasar los parámetros configurando variables de entorno. Este es también un enfoque válido, el mío es solo una alternativa que me gusta usar y proponer. – mousio