Cómo ejecutar una tarea programada sin ventanas


2

Tengo el siguiente comando ejecutándose como tarea programada en Windows 8

cmd /C copy /Y nul B:\keepalive.txt

Sin embargo, cuando se ejecuta, abre la ventana del símbolo del sistema durante una fracción de segundo, y eso es suficiente para hacerlo molesto.

¿Cómo puedo ejecutar el mismo comando pero sin abrir las ventanas del símbolo del sistema?


1
Envuelva su código en un script VBS y señale su tarea a este archivo. Los scripts de VBS pueden ejecutar comandos CMD en una ventana oculta. Lea esta respuesta para ver cómo funciona. Recuerde: en su caso, puede poner el comando CMD copy /Y nul B:\keepalive.txtdirectamente en ese VBS, y no se necesita ningún archivo CMD adicional como lo expliqué allí. Actualmente en el trabajo no puedo escribir una respuesta completa, espero que entiendas la idea.
nixda

@nixda, ¿por qué tu excelente comentario no se publica como respuesta?
Dave

@nixda, esto no funciona como se anuncia :) hay dos problemas que enfrenté tratando de hacer que esto funcione. El primero, que no es gran cosa, cuando utilicé el comando copy /Y nul B:\keepalive.txten el archivo VBS, devuelve un error, algo así como que el script no puede presentar el archivo especificado, así que puse el cmd /C copy /Y nul B:\keepalive.txtcomando completo . El segundo problema, la tarea programada no puede ejecutar archivos VBS y siempre muestra "¿Cómo desea abrir este archivo?" diálogo. Estoy en Windows 8, como se dijo anteriormente, y hacer doble clic en el archivo funciona ; es decir, el archivo se ejecuta.
TheBlueSky

Respuestas:


2

Envuelva su código en un script VBS y señale su tarea a este archivo

El método de ejecución de VBscript puede ejecutar comandos por lotes en una ventana oculta, si establece "intWindowStyle" en 0.

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

Pon este código en tu archivo HiddenTask.vbs .

Set wShell = CreateObject ("Wscript.Shell") 
wShell.Run "cmd /c copy /Y nul D:\keepalive.txt", 0

Probé con éxito tu ejemplo. Crea un nuevo archivo vacío como debería. Por supuesto sin mostrar ninguna ventana.


Lea esta pregunta SO sobre su problema de que no funciona cuando se usa como tarea programada. Otorgue sus derechos de administrador de trabajo y configure la carpeta "inicio en". Además, verifique el registro de eventos para esta tarea.

Además hice algunas capturas de pantalla. Tal vez puedas encontrar la diferencia en tu configuración.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

IMPORTANTE Si tiene un problema después de seguir las instrucciones aquí, lea los comentarios a continuación, el problema puede ser el nombre o la ruta del archivo.


Gracias por la respuesta detallada. Esto es lo que ya hice y mi problema es "¿Cómo desea abrir este archivo?" cuadro de diálogo que se muestra en lugar de ejecutar el script. No es un problema de permisos (lo estoy ejecutando bajo mi usuario) y la pregunta de Stackoverflow a la que se hace referencia no dice nada sobre "¿Cómo desea abrir este archivo?"
TheBlueSky

¿ha probado la configuración de carpeta "inicio en" como se menciona aquí? .
nixda

lo siento por la respuesta tardía. Sí, probé el "Iniciar en" y el resultado es que la tarea ni siquiera "ve" el archivo de script, es como si el "Iniciar en" no tuviera ningún efecto. Solo para iterar sobre eso, la tarea obviamente llega al archivo, sin embargo, no puede ejecutarlo como si hubiera hecho doble clic.
TheBlueSky

Sabes lo que es aún más frustrante, todo este problema se debe a que a las tareas de programación no les gustan los espacios en la ruta, incluso si usé comillas alrededor (en realidad, las comillas hacen que la ejecución falle); tampoco le gusta nada más que letras y números. Cuando moví mi script a una ruta sin espacio, funcionó. ¿De quién fue esta estúpida idea? Donde pongo mis archivos y lo que yo llamo no es asunto tuyo, Microsoft.
TheBlueSky
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.