Saltar al contenido

Ejecutar un CMD o BAT en modo silencioso

Luego de consultar expertos en el tema, programadores de varias ramas y maestros hemos dado con la solución al problema y la compartimos en esta publicación.

Solución:

Incluye la frase:

@echo off

Justo en la parte superior de su guión de murciélago.

He propuesto en la pregunta de StackOverflow una forma de ejecutar un archivo por lotes en segundo plano (no se muestran ventanas de DOS)

Eso debería responder a su pregunta.

Aquí está:


Desde su primer script, llame a su segundo script con la siguiente línea:

wscript.exe invis.vbs run.bat %*

En realidad, está llamando a un script vbs con:

  • la [path]nombre de su secuencia de comandos
  • todos los demás argumentos que necesita su secuencia de comandos (%*)

Luego, invis.vbs llamará a su secuencia de comandos con el método Windows Script Host Run(), que toma:

  • intWindowStyle: 0 significa “ventanas invisibles”
  • bEsperar al regresar : false significa que su primer script no necesita esperar a que termine su segundo script

Vea la pregunta para el script invis.vbs completo:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
                                                         ^
                             means "invisible window" ---| 

Actualización después de los comentarios de Tammen:

Si está en una sesión de DOS y desea ejecutar otro script “en segundo plano”, un simple /b (como se detalla en la misma pregunta antes mencionada) puede ser suficiente:

Puedes usar start /b second.bat para iniciar un segundo archivo por lotes de forma asíncrona desde el primero que comparte la ventana del primero.

Creo que esta es la solución más fácil y corta para ejecutar un archivo por lotes sin abrir la ventana de DOS, puede ser una gran distracción cuando desea programar un conjunto de comandos para que se ejecuten periódicamente, por lo que la ventana de DOS sigue apareciendo, aquí está su solución . Utilice un script VBS para llamar al archivo por lotes…

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:Batch Files mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Copie las líneas anteriores en un editor y guarde el archivo con la extensión .VBS. Edite el nombre del archivo .BAT y la ruta según corresponda.

valoraciones y comentarios

¡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 *