Como ya han dicho otros, se puede acceder a los parámetros pasados a través de la línea de comandos en archivos por lotes con la notación %1
a %9
. También hay otros dos tokens que puedes usar:
%0
es el nombre del ejecutable (archivo por lotes) como se especifica en la línea de comando .
%*
son todos los parámetros especificados en la línea de comando ; esto es muy útil si desea reenviar los parámetros a otro programa.
También hay muchas técnicas importantes a tener en cuenta además de simplemente cómo acceder a los parámetros.
Comprobando si se pasó un parámetro
Esto se hace con construcciones como IF "%~1"==""
, lo cual es cierto si y solo si no se pasó ningún argumento. Tenga en cuenta el carácter tilde que hace que las comillas circundantes se eliminen del valor de %1
; sin tilde obtendrá resultados inesperados si ese valor incluye comillas dobles, incluida la posibilidad de errores de sintaxis.
Manejar más de 9 argumentos (o simplemente hacer la vida más fácil)
Si necesita acceder a más de 9 argumentos, debe usar el comando SHIFT
. Este comando cambia los valores de todos los argumentos en un lugar, de modo que %0
toma el valor de %1
, %1
toma el valor de %2
, etc. %9
toma el valor del décimo argumento (si está presente), que no estaba disponible a través de ninguna variable antes de llamar SHIFT
(enter comando SHIFT /?
para más opciones).
SHIFT
También es útil cuando desea procesar fácilmente los parámetros sin requerir que se presenten en un orden específico. Por ejemplo, un script puede reconocer las banderas -a
y -b
en cualquier orden. Una buena manera de analizar la línea de comando en tales casos es
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Este esquema le permite analizar líneas de comando bastante complejas sin volverse loco.
Sustitución de parámetros por lotes
Para los parámetros que representan nombres de archivo, el shell proporciona muchas funciones relacionadas con el trabajo con archivos a los que no se puede acceder de ninguna otra manera. Se accede a esta funcionalidad con construcciones que comienzan con %~
.
Por ejemplo, para obtener el tamaño del archivo pasado como argumento, use
ECHO %~z1
Para obtener la ruta del directorio desde el que se inició el archivo por lotes (¡muy útil!) Puede usar
ECHO %~dp0
Puede ver el rango completo de estas capacidades escribiendo CALL /?
en el símbolo del sistema.