¿Cómo se puede ejecutar un archivo por lotes sin lanzar una "ventana de comandos"?
En Windows XP, ¿puedo ejecutar un archivo por lotes (.bat o .cmd), a través de un atajo, sin una “ventana negra”?
En Windows XP, ¿puedo ejecutar un archivo por lotes (.bat o .cmd), a través de un atajo, sin una “ventana negra”?
Guarda lo siguiente como wscript, por ejemplo, hidecmd.vbs después de reemplazar “testing.bat” con el nombre de tu archivo batch.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
El segundo parámetro de oShell.Run
es el valor intWindowStyle
que indica la apariencia de la ventana del programa y el valor cero es para la ventana oculta.
La referencia está aquí http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
Esto es sólo una simplificación de la respuesta de Shaji. Puede ejecutar su script por lotes a través de un VBScript (.vbs) script como este:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Esto ejecutará su archivo por lotes sin que se muestre la ventana de comandos.
Sólo para ampliar las respuestas de “Usar scripts de Windows” (que considero las mejores porque ya está incorporado) aquí está cómo hacerlo usando un script de envoltura única y pasando el nombre del archivo por lotes “real” como parámetro. Se pasarán parámetros adicionales al archivo por lotes.
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next
RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If
Así que, por ejemplo, guarda el archivo anterior como NoShell.vbs
en algún lugar y luego llama:
NoShell.vbs c:\foo\my_batch_file.bat
Finalmente, si quieres ejecutar esto desde algún lugar que no entienda el archivo .vbs (como una “Herramienta externa” en Visual Studio), querrás llamar a C:\Windows\System32\wscript.exe
con el archivo vbs como primer parámetro y tu archivo por lotes como segundo.
GPL libre y de código abierto “Create Hidden Process” http://www.commandline.co.uk/chp/
Microsoft Security Essentials, y probablemente la mayoría de los otros escáneres de virus/malware tratarán el ejecutable, chp.exe, como un virus porque oculta cualquier programa que usted especifique para que no muestre una ventana o un botón de la barra de tareas, tal como lo hacen los virus.
No es un virus. No oculta el proceso de destino para que no aparezca en el gestor de tareas, por ejemplo. Y, por supuesto, el código fuente está incluido, por lo que puedes ver que es muy pequeño y no hace nada más que ejecutar cualquier programa que le des.
Ni siquiera tienes que confiar en que el chp.exe incluido realmente fue construido a partir de esa fuente. Puedes seguir adelante y descartar el chp.exe incluido y compilar el tuyo propio a partir de la fuente, y todas las herramientas necesarias para hacerlo son incluso gratuitas y descargables.
También puedes hacer un atajo al archivo .bat o .cmd, y luego hacer clic con el botón derecho del ratón en el atajo, Propiedades, Pestaña de atajos, Ejecutar: Minimizado. Luego, en las tareas programadas, usa el atajo en lugar del archivo .bat/.cmd directamente. Esto evitará que aparezca una ventana, pero seguirá apareciendo un botón de la barra de tareas.
Puedes usar scripts de ventanas como AutoIt .
Como ejemplo, sólo escribe esto al editor de scripts de AutoIt. Es bastante simple
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Si quieres ejecutarlo en un bucle,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Compílalo como .exe - y ya está.
De la misma manera, en AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Una solución simple, sin usar ningún programa extra.
¡Buena suerte!
Use Inicio oculto (cuesta $20)
Inicio oculto - Ejecutar aplicaciones y archivos por lotes sin una ventana de consola o un aviso UAC
Las aplicaciones de consola y los archivos por lotes se ejecutan regularmente en el inicio de Windows o en una programación. El principal inconveniente de esto es que cada aplicación abre una ventana de consola que parpadea en la pantalla. Hidden Start (o Hstart) es una ligera utilidad de línea de comandos que permite ejecutar aplicaciones de consola y archivos por lotes sin ninguna ventana en segundo plano, manejar la elevación del privilegio UAC en Windows 7 y Vista, iniciar múltiples comandos en paralelo o de forma síncrona, y mucho más.