scheduled running run not batch bat batch-file scheduled-tasks

batch-file - running - windows scheduler batch file



El Programador de tareas de Windows no inicia la tarea de archivo por lotes (15)

Tengo un archivo por lotes con el siguiente código para detener e iniciar el servicio de informes SQL:

net stop "SQL Server Reporting Services (MSSQLSERVER)" timeout /t 10 net start "SQL Server Reporting Services (MSSQLSERVER)"

He configurado la tarea programada para que se ejecute a diario, actualmente se ejecuta como SISTEMA con los privilegios más altos establecidos. He configurado la opción de inicio en carpeta en la acción y, en general, todo parece estar configurado correctamente. Pero cuando ejecuto la tarea, no parece que ocurra nada, dice que la tarea se ejecutó, pero no puedo ver que el servicio se haya reiniciado como se espera.

¿Puede alguien dirigirme a lo que me falta? Gracias


Asegúrese de configurar correctamente las opciones ''Iniciar en'' y ''Programa / script'' . Si su dirección de archivo es: C: / Temp / foo.bat, configure la opción ''comenzar en'' en ''C: / Temp'' y la opción ''Programa / script'' en ''foo.bat''.

Para configurar la opción ''Comenzar en'': haga clic derecho en la tarea en el programador de tareas > Properties > Actions > Edit.

Si esto solo no funciona, intente mover el archivo .bat a un directorio con permisos básicos (tal vez un directorio compartido, por ejemplo).

Tuve un problema en el que mi archivo .bat estaba ubicado en una carpeta con algunos permisos restrictivos, por lo que solo mi cuenta de usuario podía acceder a él. A pesar de que había configurado el programador de tareas para usar mis credenciales, todavía fallaba. Mover el archivo .bat a otro directorio solucionó el problema.


En un sistema Windows que soporta runas . Primero, ejecute su programa de forma independiente ejecutándolo desde una línea de comandos que se ejecutó como ese usuario, como seguir

runas /user:<domain/username> cmd

Luego, en esa nueva línea de comandos, cd a la ruta desde donde espera que el iniciador de tareas inicie su programa y escriba los argumentos completos, por ejemplo.

cd D:/Scripts/ , luego ejecute

C:/python27/pthon.exe script.py

Cualquier error que esté siendo suprimido por el programador de tareas debería aparecer en la salida de la línea de comandos y facilitará la depuración de las cosas.


Establecer ''Programa / script'' -> archivo.bat establecer ''Comenzar en'' el resto de la ruta (archivo.bat)


Este es un hilo bastante antiguo, pero el problema sigue siendo el mismo.

Probé varias cosas, ninguna de ellas funcionó.

  1. Agregado un inicio en ruta (sin comillas)
  2. Se eliminó la ruta completa del archivo por lotes en el campo Programa / Script, etc.
  3. Se agregó C:/Windows/system32/cmd.exe al Programa y se agregó /c myscript.bat al campo de argumentos.

Esto es lo que funcionó para mí.

Campo de programa / script - cmd

Añadir argumentos - / c myscript.bat

Comenzar en: Ruta a myscript.bat


La solución es que debe desmarcar (desactivar) la opción "Ejecutar solo si el usuario ha iniciado sesión".

Después de ese cambio, comienza a funcionar en mi máquina.


Mi aplicación no se pudo iniciar a través del "Programador de tareas".

El error en el "Visor de eventos" es: System.IO.DirectoryNotFoundException

El "Programador de tareas" intenta ejecutar esta aplicación con el usuario "SISTEMA". El problema fue que no se asignó una "unidad de red" para el usuario "SISTEMA". Entonces, lo que hice fue crear un archivo ".bat" y mapear la "unidad de red" antes de iniciar la aplicación:

net use T: //172.20.2.215/images cd C:/MyApplication start MyApplication.exe

Así que primero revise sus registros: "Visor de eventos" -> Registros de Windows -> Aplicación


Mi problema fue causado por OneDrive. OneDrive estaba sincronizando la carpeta donde vivía mi archivo por lotes, y eso parece impedir que el Programador de tareas lo ejecute. (¿Nadie en MS prueba este tipo de cosas?)

De todos modos, moviendo mi archivo por lotes a una carpeta que no estaba en OneDrive, el Programador de tareas podría iniciar el archivo por lotes.


Para mí, el problema se debió a que .bat incluía un cd en una unidad de red. Esto falló, y luego la llamada posterior al programa en esa unidad de red no hizo nada.

Descubrí esto agregando > log.txt en el campo Agregar argumentos de la ventana Editar acción para la tarea.


Para mi fue problema de gatillo. Por defecto debería estar On a Schedule en la pestaña de disparo. Había seleccionado At log on y luego estaba esperando para ejecutar la tarea. Como su nombre lo indica en el inicio de sesión, significa que debe cerrar sesión e iniciar sesión.

Intenta ponerlo en un horario y dispararlo cada minuto.


Pruebe el siguiente código:

Archivo de lote.bat

cd c:/batchfilepath net stop "SQL Server Reporting Services (MSSQLSERVER)" timeout /t 10 net start "SQL Server Reporting Services (MSSQLSERVER)"


Tuve el mismo problema y ninguna de las soluciones funcionó. Cuando revisé el historial me di cuenta del problema. Tuve esta advertencia

Task Scheduler did not launch task "/TASK_NAME" because instance "{34a206d4-7fce-3895-bfcd-2456f6ed6533}" of the same task is already running.

En la pestaña de configuración hay una opción desplegable para "Si la tarea ya se está ejecutando, entonces se aplica la siguiente regla:" y el valor predeterminado es "No iniciar una nueva instancia". Cambie eso a "Ejecutar una nueva instancia en paralelo" o "Detener la instancia existente" en función de lo que realmente necesita hacer.

Sé que es un tema antiguo y las soluciones múltiples son buenas aquí, esto es lo que funcionó para mí. Espero eso ayude.


Tuvo el mismo problema, asegúrese de marcar "Ejecutar solo cuando el usuario está conectado", al menos eso es lo que hizo que mi archivo bat volviera a estar vivo.


Una solución es que puede ejecutar su archivo ''.bat'' con el archivo ''.vbs'' y puede ejecutar este archivo vbs en el programador de Windows .

Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run("cron_jobs.bat"), 0, True

Puedes hacer esto y espero que solucione tu problema.


Yo tuve el mismo problema. Creo que es un problema de privilegio. Si ha seleccionado "Ejecutar solo cuando el usuario ha iniciado sesión" seleccionado, no ocurrirá.

Espero que ya lo hayas descubierto, pero quería registrarlo aquí para la siguiente persona que haya perdido horas con esto.


¡Perdí mucho tiempo en este tonto asunto!

agregue un comando de CD al lugar donde reside su archivo por lotes en la primera línea de su archivo por lotes y vea si resuelve el problema.

cd D:/wherever/yourBatch/fileIs

CONSEJO: utilice rutas absolutas, idealmente las rutas relativas no deberían ser un problema, pero el programador tiene dificultades para entenderlas.