Système d'exploitation: Windows Server 2008 R2 Enterprise
Je ne parviens pas à faire en sorte que le planificateur de tâches exécute des fichiers .bat lorsque je suis déconnecté. Je souhaite utiliser un fichier de production .bat, mais pour le dépannage, j'utilise C:\Utilisateurs\Administrateur\Bureau\test.bat.
test.bat est très simple. Tout ce qu'il contient est: Taskkill/im notepad.exe
Il fonctionne avec succès seul. Si le Bloc-notes est ouvert et que je double-clique sur test.bat, la fenêtre cmd clignote et le Bloc-notes meurt. Le fichier .bat n'est pas le problème.
La tâche que j'ai créée dans le Planificateur de tâches est "Test taskkill" (sans les guillemets). Je peux voir son emplacement dans l'Explorateur Windows: C:\Windows\System32\Tasks\Test taskkill
Si la tâche est configurée pour ne s'exécuter que lorsque l'utilisateur est connecté, elle fonctionne. Avec ce paramètre, je peux cliquer avec le bouton droit de la souris sur> exécuter et obtenir le même comportement que si je double-cliquais sur le fichier .bat. Cela signifie que la tâche est configurée correctement.
Si je le configure pour qu'il fonctionne ou non, l'utilisateur est connecté, puis, lorsque je clique avec le bouton droit de la souris sur>, rien ne se passe. Le travail est signalé comme ayant été exécuté avec succès dans l'historique, mais le bloc-notes survit. Je sais que j'utilise les informations d'identification appropriées pour le compte que je configure pour exécuter la tâche. Ce compte est l'administrateur local.
Ce problème semble similaire à d'autres que ceux rencontrés dans le passé:
Exécution d'un fichier .bat dans une tâche planifiée
Le fil dans le deuxième lien semblait résoudre un problème identique pour de nombreuses personnes en suggérant que le compte utilisé pour exécuter la tâche nécessite une autorisation explicite pour le fichier .bat et tous les fichiers modifiés par le fichier .bat. C'était très prometteur (si une exigence ennuyante). Cependant, j'ai confirmé ou attribué des autorisations explicites à l'administrateur local pour les domaines suivants, et je n'ai toujours pas réussi:
De plus, j'ai confirmé que le compte d'administrateur local est dans le groupe d'administrateurs locaux.
Me manque-t-il d'autres autorisations à définir? Y a-t-il autre chose que je devrais regarder? Merci!
J'ai résolu ce problème avec l'aide d'un entrepreneur qui effectuait un autre travail pour mon institution.
Dans la fenêtre de propriétés de la tâche, sous l'onglet Action, lors de la création ou de la modification de l'action qui ouvre le fichier de traitement par lots (dans mon cas test.bat), se trouve le champ "Programme/script:", ainsi qu'un "Démarrer dans (facultatif): "champ. J'avais précédemment le champ "Programme/script:" contenant le chemin complet du fichier, se terminant par le nom du fichier, et le champ "Démarrer dans (facultatif):" null. Cette configuration semble fonctionner sans problème lorsque la tâche est définie sur "Exécuter uniquement lorsque l'utilisateur est connecté" dans l'onglet Général de la fenêtre des propriétés de la tâche. Toutefois, cette configuration ne fonctionne pas lorsque la tâche est définie sur "Exécuter si l'utilisateur est connecté ou non".
Afin de résoudre le problème, j'ai modifié l'action pour que le champ "Programme/script:" contienne uniquement le nom du fichier, pas son chemin. Je mets le chemin du fichier dans le champ "Démarrer dans (facultatif):". Cette configuration fonctionne lorsque la tâche est définie sur "Exécuter uniquement lorsque l'utilisateur est connecté"! J'ai testé avec la tâche exécutée sur un déclencheur et également avec son exécution manuelle.
Pas sûr que cela aide. Mon problème utilisait également un programme interactif (notamment Excel).
La création des 2 dossiers vides (Bureau) l’a résolu. Créez les deux même si vous utilisez x64.
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
J'ai débogué mon code et réalisé que le code était sorti sur cette ligne
ExcelFile excelFile = new ExcelFile(directory, filename);
J'ai lu cette solution quelque part et je ne trouve pas l'URL maintenant.
J'avais un problème similaire, mais il était lié au fait qu'il y avait un espace dans le chemin de mon fichier de commandes exécutable. J'ai supprimé l'espace et maintenant cela fonctionne bien.
Ce qui a fonctionné pour moi était de s’assurer que le chemin est disponible.
j'ai utilisé Net Use Z:\nom_ordinateur\folder/persistent: oui
puis xxcopy/s/c/d/e/i/y D: *. * z:\BackupBat
Je remarque que tous mes autres travaux .bat fonctionnent bien. Seul celui avec la référence à un dossier de carte était celui qui ne fonctionnait pas, ce qui doit être le problème. avec ces changements, le fichier chauve-souris fonctionne bien.
La vérification de ce qui suit a fonctionné pour moi:
1) L'option "Exécuter si l'utilisateur n'est pas connecté" dans le Planificateur de tâches ne fonctionne pas pour les programmes en mode interactif. Exemple de bloc-notes, horloge. Les tâches ne seront pas exécutées de manière interactive. Assurez-vous que votre programme ne nécessite aucune action interactive.
2) Cochez la case "Démarrer dans (facultatif)" si le chemin du programme n’est pas l’un des chemins du système. Vous avez intérêt à y ajouter votre chemin de programme. Dans "Programme/Script", entrez uniquement le nom du programme, puis entrez le chemin de votre script dans "Démarrer dans".
3) Le compte d’utilisateur que vous avez configuré pour votre programme doit avoir l’autorisation non seulement d’exécuter votre programme lui-même, mais également d’exécuter tous les autres programmes liés à votre programme.
Voici un exemple de programme:
Sur C:\myprogram\folderOne\test.cmd
date /t >> c:\Temp\testAuto.log
date /t >> c:\temp\testAuto.log
echo ----->> c:\temp\testAuto.log
cls
exit
-Créez des tâches en sélectionnant Général> Options de sécurité "Exécuter si l'utilisateur est connecté ou non" .____. Entrez Action> Programme/script: test.cmd sur "Démarrer dans" C:\myprogram\folderOne - Run, vous pouvez voir les fenêtres cmd s'ouvrir et se fermer très rapidement. Le fichier testAuto.log doit être dans le dossier c:\tmp.
C'est peut-être parce que vous n'avez pas la permission. M rencontrant le même problème et j'ai trouvé la solution comme ceci - Faites un clic droit sur votre tâche que dans les propriétés . Dans les propriétés, cliquez sur l'onglet Général, puis cliquez sur 'Groupe d'utilisateurs ou Utilisateur' et sélectionnez l'utilisateur approprié.