Saltar al contenido

Archivo BAT: abra una nueva ventana de cmd y ejecute un comando allí

Solución:

Es posible que ya encuentre su respuesta porque fue hace algún tiempo que preguntó. Pero intenté hacer algo similar al codificar ror. Quería ejecutar “rails server” en una nueva ventana de cmd para no tener que abrir un nuevo cmd y luego encontrar mi ruta nuevamente.

Lo que descubrí fue usar el interruptor K así:

start cmd /k echo Hello, World!

start before “cmd” abrirá la aplicación en una nueva ventana y “/ K” ejecutará “echo Hello, World!” después de que el nuevo cmd esté activo.

También puede usar el modificador / C para algo similar.

start cmd /C pause

Esto luego ejecutará “pause” pero cerrará la ventana cuando el comando esté listo. En este caso, después de presionar un botón. Encontré esto útil para el “servidor de rails”, luego, cuando apago mi servidor de desarrollo, no tengo que cerrar la ventana después.

Utilice lo siguiente en su archivo por lotes:

start cmd.exe /k "more-batch-commands-here"

o

start cmd.exe /c "more-batch-commands-here"

/ c Ejecuta el comando especificado por cadena y luego termina
/ k Ejecuta el comando especificado por cadena pero permanece

Consulte la documentación de cmd.exe usando cmd /? para más detalles.

El formateo adecuado de la cadena de comandos se vuelve un poco más complicado con espacios en los argumentos. Vea los ejemplos a continuación. Tenga en cuenta el uso de comillas dobles anidadas en algunos ejemplos.

Ejemplos:

Ejecute un programa y pase un parámetro de nombre de archivo:
CMD /c write.exe c:docssample.txt

Ejecute un programa y pase un nombre de archivo largo:
CMD /c write.exe "c:sample documentssample.txt"

Espacios en la ruta del programa:
CMD /c ""c:Program FilesMicrosoft OfficeOfficeWinword.exe""

Espacios en la ruta del programa + parámetros:
CMD /c ""c:Program Filesdemo.cmd"" Parameter1 Param2
CMD /k ""c:batch filesdemo.cmd" "Parameter 1 with space" "Parameter2 with space""

Inicie demo1 y demo2:
CMD /c ""c:Program Filesdemo1.cmd" & "c:Program Filesdemo2.cmd""

Fuente: http://ss64.com/nt/cmd.html

No es muy fácil.

El mejor enfoque es hacer que la parte de su secuencia de comandos que desea que se ejecute en una “nueva ventana” esté en un archivo .bat separado. Esto podría no ser práctico si, por ejemplo, necesita muchos estados del resto de su script (variables, etc.). Una opción es pasar cualquier valor que necesite (por ejemplo, dir para operar) al archivo por lotes:

start cmd.exe stuff.bat %this_dir%

Si tiene una gran cantidad de estado para transmitir, podría considerar generar un archivo por lotes en tiempo de ejecución:

set foo=Hello, World
set list_me=%userprofile%

set tmpdir=c:windowstemp
set tmp=%tmpdir%tmp.foo

del /q /f "%tmp%"

echo.echo %foo%>>"%tmp%"
echo.dir "%list_me%">>>"%tmp"

start cmd.exe "%tmp%"

del /q /f "%tmp%"

Evidentemente, este es un ejemplo trivial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *