Ejecutando un CMD o BAT en modo silencioso

¿Cómo puedo ejecutar un archivo CMD o .bat en modo silencioso? Estoy tratando de evitar que la interfaz CMD se muestre al usuario.

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, llamas a un script vbs con:

  • el [camino] \ nombre de su script
  • todos los demás argumentos que necesita tu script ( %* )

Entonces, invis.vbs llamará a su script con el método Windows Script Host Run () , que toma:

  • intWindowStyle: 0 significa “ventanas invisibles”
  • bWaitOnReturn: falso significa que su primer script no necesita esperar a que termine su segundo script

Vea la pregunta para la secuencia de comandos completa invis.vbs:

 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 iniciar otro script “en segundo plano”, un simple /b (como se detalla en la misma pregunta antes mencionada ) puede ser suficiente:

Puede utilizar start /b second.bat para iniciar un segundo archivo de proceso por lotes de forma asincrónica desde el primero que comparte su primera ventana.

Incluye la frase

@echo off

justo en la parte superior de tu secuencia de comandos bat.

Utilice Advanced BAT to EXE Converter desde http://www.battoexeconverter.com

Esto le permitirá incrustar cualquier binario adicional con su archivo por lotes en un solo EXE completamente silencioso y su freeware

Creo que esta es la solución más fácil y más corta para ejecutar un archivo por lotes sin abrir la ventana de DOS, puede ser muy molesto cuando desea progtwigr un conjunto de comandos para que se ejecuten periódicamente, para que la ventana de DOS siga apareciendo, aquí está su solución . Use una secuencia de comandos 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 de arriba a un editor y guarde el archivo con la extensión .VBS. Edite el nombre de archivo .BAT y la ruta en consecuencia.

Utilice Bat To Exe Converter para hacer esto

http://download.cnet.com/Bat-To-Exe-Converter/3000-2069_4-10555897.html
(Elija Enlace de descarga directa )

1 – Abre Bat to Exe Converter, selecciona tu archivo Bat.
2 – En el menú de opciones, seleccione “Aplicación invisible”, luego presione el botón comstackr.

¡Hecho!

Prueba SilentCMD . Este es un pequeño progtwig gratuito que ejecuta un archivo por lotes sin mostrar la ventana del símbolo del sistema.

Si quiero ejecutar command promt en modo silencioso, entonces hay un comando vbs simple:

 Set ws=CreateObject("WScript.Shell") ws.Run "TASKKILL.exe /F /IM iexplore.exe" 

si quería abrir una URL en cmd en silencio , entonces aquí hay un código:

 Set WshShell = WScript.CreateObject("WScript.Shell") Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0) 'wait 10 seconds WScript.sleep 10000 Set ws=CreateObject("WScript.Shell") ws.Run "TASKKILL.exe /F /IM iexplore.exe" 

Estoy bastante seguro de que me gusta este método lo mejor. Copie y pegue el siguiente código en un archivo .vbs. Desde allí, llamará al archivo por lotes … así que asegúrese de editar la última línea para especificar la ruta y el nombre del archivo por lotes (que debe contener el archivo que desea iniciar o realizar las acciones que necesita realizar)

 Const HIDDEN_WINDOW = 12 strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set objStartup = objWMIService.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ objConfig.ShowWindow = HIDDEN_WINDOW Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID) 

Definitivamente funcionó para mí. Los comentarios son bienvenidos 🙂

Me crearon RunApp para hacer ese trabajo y también lo uso en mi entorno de producción, espero que sea útil.

La configuración como a continuación:

archivo: config.arg

 :style:hidden MyBatchFile.bat arg1 arg2 

Y ejecute runapp.exe en runapp.exe lugar.