1 votos

¿Cuál es la forma correcta de que un archivo por lotes se ejecute con params?

Tengo un archivo por lotes. En el cual, necesito comenzar otra copia de sí mismo en una nueva ventana con un parámetro. Probé el comando start "" "%~0" "Param" pero decía '"Param"' is not recognized as an internal or external command, operable program or batch file. y no inició nada. La única forma en que podía hacerlo funcionar era start %~0 Param , pero pensé que se bloquearía si el camino tuviera espacios. Entonces, ¿cuál es la forma correcta de iniciar otra instancia del archivo por lotes actual con parámetros?

2voto

Larryc Puntos 47

Empezaría una segunda shell cmd, algo como:

iniciar "" Cmd.exe% ~ 0 parámetros

Solo para darle a cada iteración del archivo por lotes su propio comando shell.

1voto

LPChip Puntos 12459

Para llamar a otro archivo por lotes desde un archivo por lotes, utilice call "name of script.bat" o `start" script.bat "

Aunque puede hacerlo sin él, se producirán resultados inesperados, dado que se llamará a sí mismo continuamente.

Así que técnicamente, solo puedes escribir

 %0 MyParam
 

1voto

LotPings Puntos 62

Para evitar un bucle infinito, compruebe si hay argumentos presentes:

 :: Q:\Test\2019\01\25\SU_1298393.cmd
@Echo off
If "%~1" neq "" goto :HasArgs
Echo restart with parms
"%~0" "parms"

:HasArgs
Echo %0 started with %*
Pause
Exit /B
 

Ejecución de la muestra:

 > SU_1298393.cmd
restart with parms
"SU_1298393.cmd" started with "parms"
Press any key to continue . . .

> SU_1298393.cmd foo bar
SU_1298393.cmd started with foo bar
Press any key to continue . . .
 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: