149 votos

Ejecutar un .archivo bat en una tarea programada sin una ventana

Tengo una tarea programada que se inicia una secuencia de comandos por lotes que se ejecuta robocopy cada hora. Cada vez que se ejecuta, aparece una ventana en el escritorio con robocopy de salida, que realmente no quieren ver.

Me las arreglé para que aparezca la ventana minimizada por hacer el trabajo programado ejecutar

cmd /c start /min mybat.bat

pero que me da una nueva ventana de comandos de cada hora. Yo estaba sorprendido por esto, dado cmd /c "ejecuta el comando especificado en cadena y, a continuación, finaliza" - debo haber entendido mal el docs.

Es allí una manera de ejecutar una secuencia de comandos por lotes sin ella, apareciendo una ventana de cmd?

150voto

Bob Puntos 34449

Usted podría ejecutar de forma silenciosa a través de una secuencia de Comandos de Windows en su lugar. El Método de Ejecución le permite ejecutar una secuencia de comandos en modo invisible. Crear un .vbs archivo como este

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

y el calendario. El segundo argumento en este ejemplo se establece el estilo de ventana. 0 significa "ocultar la ventana."

La sintaxis completa del método Run:

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

Argumentos:

  • objeto: WshShell objeto.
  • strCommand: Cadena de valor que indica la línea de comandos que desea ejecutar. Debe incluir los parámetros que desea pasar al archivo ejecutable.
  • intWindowStyle: Opcional. Valor entero que indica la apariencia de la ventana del programa. Tenga en cuenta que no todos los programas hacen uso de esta información.
  • bWaitOnReturn: Opcional. Valor booleano que indica si la secuencia de comandos debe esperar a que el programa termine de ejecutar antes de continuar a la siguiente instrucción en la secuencia de comandos. Si se establece a true, la ejecución del script se detiene hasta que el programa finalice, y devuelve cualquier código de error devuelto por el programa. Si se establece a false (valor predeterminado), el método devuelve inmediatamente después de iniciar el programa, la devolución automática de 0 (no debe ser interpretado como un código de error).

59voto

John Rennie Puntos 6821

Estás ejecutando esto como una tarea programada? Si es así configurarlo para que se ejecute como una cuenta de usuario diferente no será visible para el usuario que ha iniciado sesión. Si el script no necesita acceso a la red a los elementos que necesitan autenticación de windows (como recursos compartidos de archivos o impresoras), se puede ejecutar como "nt authority\system" y deje la contraseña en blanco. En Windows 7, sólo tienes que configurar el usuario del SISTEMA, y pulse OK.

(Usted probablemente tendrá que usar un usuario real, aunque si vas a usar robocopy...)

JR

18voto

rocketmonkeys Puntos 258

También se podría tratar de CHP (Crear procesos ocultos), hace exactamente lo que usted podría pensar...

CHP.EXE mybat.bat

Se ejecuta sin ventana de comandos. Perfecto! Hecha por la misma gente como CMDOW, pero este es el más apropiado.

9voto

seanyboy Puntos 3170

CMDOW es una impresionante herramienta que te permite hacer muchas, muchas cosas para windows desde la línea de comandos.

Una de las cosas más sencillas de hacer es ocultar la ventana actual (por lo general como una primera línea en el archivo bat) con:

cmdow @ /hid

o iniciar un nuevo proceso oculto con

cmdow /run /hid mybat.bat

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: