Arreglar la tarea programada no se ejecutará para el archivo .BAT

Si tiene un archivo .BAT y está tratando de hacer que se ejecute automáticamente usando el Programador de tareas(Task Scheduler) en Windows , es posible que se haya topado con el problema de que simplemente no se ejecuta a menos que ejecute la tarea manualmente.

Creé un archivo por lotes que elimina todo dentro de una carpeta temporal cada vez que se inicia la computadora. Creé una tarea básica en el Programador de tareas(Task Scheduler) y esperaba lo mejor. Desafortunadamente, no pasó nada cuando mi computadora arrancó. Después de muchas pruebas y errores, descubrí cómo ejecutar el script.

En este artículo, lo guiaré a través de la configuración y los permisos que necesita ajustar para que su archivo por lotes se ejecute sin intervención manual.

Paso 1: verifique los permisos de File/Folder

El primer paso para solucionar este problema es asegurarse de que la cuenta que está utilizando para ejecutar la secuencia de comandos en el Programador de tareas(Task Scheduler) tenga permisos de Control total(Full Control) en la carpeta que contiene la secuencia de comandos, la secuencia de comandos en sí y cualquier carpeta o archivo que toque la secuencia de comandos cuando se ejecuta.

Por ejemplo, creé el siguiente script por lotes a continuación:

set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

Guardé el archivo .BAT en mi carpeta Documentos. La ruta es C:\Users\username\Documents . Fui a C:\Users\username, hice clic derecho en la carpeta Documentos y luego en (Documents)Propiedades(Properties) . Luego hice clic en la pestaña Seguridad .(Security)

Como puede ver, la cuenta de usuario Aseem se agregó explícitamente y se le otorgó el permiso Control total.(Full Control) Ahora debe hacer lo mismo para la carpeta que contiene el script y para el script en sí. No asuma que si otorga permisos a la carpeta que contiene el script, está listo para continuar, porque no es así. Por último, establezca permisos en cualquier archivo y carpeta con los que interactuará el script.

En mi caso, tuve que ir a C:\test , hacer clic con el botón derecho en esa carpeta y agregar allí mi cuenta de usuario con permisos de control total . (Full Control)Es un poco molesto tener que hacer esto, pero es la única forma de ejecutar el script.

Nota: La cuenta que se utiliza para ejecutar el script debe ser parte del grupo de administradores locales en la computadora. En mi caso, la cuenta de Aseem es una cuenta de administrador y por lo tanto parte del grupo de Administradores locales. (Note: The account that is being used to run the script has to be part of the local Administrators group on the computer. In my case, the Aseem account is an administrator account and therefore part of the local Administrators group. )

Paso 2: verifique la configuración del programador de tareas(Task Scheduler Settings)

Ahora vayamos al Programador de tareas(Task Scheduler) y cambiemos la configuración adecuada allí. Abra el Programador de tareas(Task Scheduler) y busque su tarea en la sección Tareas activas( Active Tasks) . Deben enumerarse en orden alfabético.

Haga doble clic en él y abrirá la tarea por sí mismo en la misma ventana. Para editar la tarea, tendrás que hacer clic derecho sobre ella y seleccionar Propiedades(Properties) .

Hay varias pestañas y un par de cosas que deben verificarse y cambiarse aquí. En primer lugar, en la pestaña General , debe verificar la cuenta de usuario que se está utilizando para ejecutar la tarea. En mi caso, es la cuenta de Aseem , a la que le había dado permisos anteriormente en el sistema de archivos y que forma parte del grupo de Administradores(Administrators) en la computadora.

A continuación, debe elegir la opción Ejecutar si el usuario ha iniciado sesión o no( Run whether user is logged on or not) y elegir Windows Vista, Windows Server 2008 en el cuadro Configurar para(Configure for) .

En la pestaña Acciones(Actions) , debe seleccionar el script, hacer clic en Editar(Edit) y luego agregar la ruta a la carpeta que contiene el script en el cuadro Comenzar en (opcional)(e Start in (optional)) . Esto puede parecer innecesario, pero no lo es. En mi caso, puse C:\Users\Aseem\Documents\ en el cuadro.

Ahora haga clic en Aceptar(OK) para guardar la configuración. Cuando haga esto, puede aparecer un cuadro de diálogo donde debe ingresar la contraseña de la cuenta de usuario que ejecutará la tarea. Esto trae a colación otro requisito. No puede utilizar una cuenta que no tenga contraseña. La cuenta de usuario debe tener una contraseña para que se ejecute la tarea.

Por último, debe ejecutar la tarea manualmente una vez en el Programador de tareas(Task Scheduler) para asegurarse de que se ejecute. Si funciona bien manualmente después de cambiar todas las configuraciones, entonces debería funcionar cuando se supone que debe activarse. En mi caso, se suponía que sucedería al inicio y después de realizar los cambios, todo funcionó bien.

Tenga en cuenta que si su secuencia de comandos accede a diferentes computadoras en un dominio cuando se ejecuta, debe intentar usar la cuenta de administrador del dominio para ejecutar la tarea. Esto asegurará que la cuenta tenga suficientes permisos para acceder a las computadoras remotas.

Otro elemento a tener en cuenta es si su secuencia de comandos accede a recursos en un recurso compartido de red. Si su secuencia de comandos utiliza letras para acceder a la red, es posible que no se ejecute. Por ejemplo, en lugar de usar F:\data\ , debe usar \\machinename\share_name\data\ Â en el script. Si aún no puede ejecutar su secuencia de comandos, publique un comentario aquí e intentaré ayudarlo. ¡Disfrutar!



About the author

Soy un ingeniero de software con más de 10 años de experiencia trabajando en Apple iOS y dispositivos de borde. Mi experiencia en ingeniería de hardware hace que me apasione asegurarme de que los dispositivos de nuestros clientes sean lo más fiables y fluidos posible. He estado escribiendo código durante los últimos años y he aprendido a usar Git, Vim y Node.js.



Related posts