¿Cómo puedo pasar argumentos a un archivo por lotes?

Necesito pasar un ID y una contraseña a un archivo por lotes en el momento de la ejecución en lugar de codificarlos en el archivo.

Esto es lo que parece la línea de comandos:

test.cmd admin P@55w0rd > test-log.txt

Otro consejo útil es utilizar %* para significar "todo". Por ejemplo:

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

Cuando se ejecuta

test-command admin password foo bar

se ejecutará el archivo por lotes anterior:

fake-command /u admin /p password admin password foo bar

Puede que tenga la sintaxis ligeramente equivocada, pero esta es la idea general.

Comentarios (9)

Si quieres manejar inteligentemente los parámetros que faltan puedes hacer algo como

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
Comentarios (4)

Sí, y no te olvides de usar variables como %%1 cuando uses si y para y la pandilla.

Si te olvidas del doble %, entonces estarás sustituyendo en argumentos de línea de comandos (posiblemente nulos) y recibirás algunos mensajes de error bastante confusos.

Comentarios (5)