Pregunta

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

¿Fue útil?

Solución

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

Eso debería responder a tu 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ás llamando a un script vbs con:

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

Luego, invis.vbs llamará a su script con el Método de Windows Script Host Run () , que requiere:

  • intWindowStyle: 0 significa " ventanas invisibles "
  • bWaitOnReturn: false significa que su primer script no necesita esperar a que termine su segundo script

Vea la pregunta para el script completo de 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 otra secuencia de comandos " en segundo plano " ;, un / b simple (como se detalla en la misma pregunta mencionada ) puede ser suficiente:

  

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

Otros consejos

Incluir la frase

@echo off

justo en la parte superior de tu script de bat.

Use Advanced BAT to EXE Converter de http://www.battoexeconverter.com

Esto le permitirá incrustar cualquier archivo binario adicional con su archivo por lotes en un EXE independiente completamente silencioso y su software gratuito

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 una gran distracción cuando se desea programar un conjunto de comandos para que se ejecuten periódicamente, por lo que la ventana de DOS sigue apareciendo, aquí es tu solucion Use 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 de arriba a un editor y guarde el archivo con la extensión .VBS. Edite el nombre del archivo .BAT y la ruta correspondiente.

Usa el convertidor de Bat To Exe para hacer esto

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

1 - Abre el Bat to Exe Converter, selecciona tu archivo Bat.
2: en el menú Opción, seleccione " Aplicación invisible " ;, luego presione el botón compilar.

¡Hecho!

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

Si quiero ejecutar el símbolo del sistema en modo silencioso, hay un comando vbs simple:

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

si quisiera abrir una url en cmd en silencio , 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 este método es el que más me gusta. 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 :)

Estoy creado RunApp para hacer ese trabajo y también usarlo en mi env de producción, Espero que sea de ayuda.

La configuración como abajo:

archivo: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

Y ejecuta runapp.exe en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top