Pasar argumentos a archivos por lotes
Para pasar argumentos a un archivo por lotes, escriba los valores después del nombre del archivo, separados por espacios. El archivo por lotes los recibe como %1, %2, etc.
Este artículo muestra cómo pasar y recibir argumentos, algo necesario al llamar a otro archivo por lotes para compartir un proceso común, con código de ejemplo.
Cómo pasar argumentos a un archivo por lotes
Basta con escribir los argumentos después del nombre del archivo al ejecutarlo con el comando call o start.
El siguiente código es un ejemplo con call.
call sample.cmd test
Con start, la primera cadena entre comillas se interpreta como el título de la ventana. Si la ruta del ejecutable puede ir entre comillas, es más seguro poner primero un título vacío "".
start "" sample.cmd test
Si escribe start "C:\My Scripts\job.cmd", la primera cadena entre comillas se toma como título y no como ruta del archivo. Ponga primero un título vacío: start "" "C:\My Scripts\job.cmd".
Para más detalles sobre call y start, consulte los siguientes artículos.
Usar los argumentos recibidos
Los argumentos que recibe el archivo por lotes se guardan en orden en %1, %2, %3, etc.
Ejemplo con call
Cree el siguiente archivo por lotes sample.cmd.
@echo off
setlocal
echo El argumento recibido es %1.
echo El segundo argumento es %2.
endlocal
Al ejecutarlo con un argumento, se muestra lo siguiente.
Solo se pasó un argumento, por lo que %2 está vacío.
Con varios argumentos, la salida es la siguiente.

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超 入門

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Ejemplo con start
Como se indicó, start necesita un título, así que escriba el título, la ruta del archivo que se ejecuta y los argumentos, en ese orden.
Cree el siguiente archivo por lotes sample.cmd.
@echo off
setlocal
echo El argumento recibido es %1.
echo El segundo argumento es %2.
pause
endlocal
Al ejecutarlo con un argumento, se abre una nueva ventana del símbolo del sistema que muestra lo siguiente.
Quitar comillas y formas especiales (%~1, %0)
Para pasar un valor con espacios, enciérrelo entre " (por ejemplo, call sample.cmd "My File.txt"). Entonces %1 incluye las comillas, mientras que %~1 devuelve el valor sin ellas.
%0 contiene el nombre del propio archivo por lotes, y %~dp0 devuelve la ruta de la carpeta donde se encuentra.
Comprobar el número de argumentos
%* contiene todos los argumentos recibidos, pero para manejar con rigor valores con espacios es más seguro contarlos uno a uno con shift.
Cree el siguiente archivo por lotes sample.cmd.
@echo off
setlocal
set count=0
:count_loop
if "%~1"=="" goto count_end
set /A count+=1
shift
goto count_loop
:count_end
echo El número de argumentos es %count%.
endlocal
Al ejecutarlo con argumentos, se muestra lo siguiente.
Eliminar argumentos con shift
El comando shift descarta el primer argumento y desplaza los demás una posición.
Cree el siguiente archivo por lotes sample.cmd.
@echo off
setlocal
echo El argumento recibido es %1.
shift
echo El segundo argumento es %1.
shift
echo El tercer argumento es %1.
endlocal
Al ejecutarlo con argumentos, se muestra lo siguiente.
Todos los echo usan %1, pero la salida muestra correctamente el primer, segundo y tercer argumento, porque shift desplaza los demás argumentos cada vez.
Solo se pueden usar directamente %1 a %9, pero repitiendo shift se pueden procesar en orden los argumentos posteriores a %9. Tenga en cuenta también que %* no cambia al ejecutar shift.
Procesar cada argumento recibido
Aplicando la misma idea, se puede procesar cada argumento por turno.
Cree el siguiente archivo por lotes sample.cmd.
@echo off
setlocal
:loop
if "%~1"=="" goto end
echo El argumento recibido es %~1.
shift
goto loop
:end
endlocal
Al ejecutarlo con argumentos, se muestra lo siguiente.