Lancer une commande en tache planifiée après x minutes

Résolu/Fermé
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 - 15 août 2022 à 12:47
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 - 27 août 2022 à 12:11

Bonjour

Je cherche à ajouter une tache planifiée à la suite d'une commande batch. est il possible une fois une commande lancée d'inscrire dans le planificateur de tache une nouvelle commande qui vient annuler la précédente au bout d'une heure?

Car dans le planificateur je ne vois que la possibilité de créer des tache journalière, hebdomadaire.. à telle heure...; mais pas une tache dans 15minutes, 1heure... à partir de l'instant T actuel.

merci

Windows / Chrome 104.0.5112.81

10 réponses

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
15 août 2022 à 18:56

Bonjour,

Si tu veux arrêter un script batch par un autre batch ce n'est pas possible car tu ne pourrais pas identifier de manière précise le batch à arrêter, tu pourrais seulement arrêter tous les processus cmd.exe



0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
17 août 2022 à 14:06

en fait j'ai 2 batch l'un et l'autre ayant des fonction inverse. a savoir bloquer une application via le parefeu, puis le second qui réactive l'application en la supprimant des blocage du parefeu. donc l'idée c'est une fois l epremier batch lancé il y a le second qui vient s'insérer dans une tache planifiée pour du coup revenir à l'état initial (appli fonctionnelle)

grosso modo je cherche un outil qui désactive internet pendant 1h ou 2h, puis se réactive automatiquement après le délai imposé

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
17 août 2022 à 14:19

Comment est lancé le premier batch de blocage ?

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
17 août 2022 à 14:48

il est lancé via un fichier .bat à distance à l'aide de psexec, à l'aide d'une appli de prise en main type veyon

0
brucine Messages postés 18279 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 décembre 2024 2 702
16 août 2022 à 09:12

Bonjour,

La répétition d'une tâche à intervalles programmés s'effectuait historiquement par AT qui est une commande pour Windows 2000 et peut-être XP, je ne me souviens plus, et dorénavant dépréciée. https://www.computerhope.com/at.htm

Van der Woude propose des utilitaires alternatifs: https://www.robvanderwoude.com/ntat.php

Certaines commandes historiques fonctionnent dans les versions plus récentes dès lors qu'existe un exécutable associé (c'est le cas de DIRUSE), mais je ne crois pas que ce soit le cas de AT.

AT a été remplacé dans les versions récentes de Windows par SCHTASKS, mais il ne s'agit évidemment que de répétition de la même tâche, elle programmable à l'envi: https://ss64.com/nt/schtasks.html

Un certain nombre d'utilitaires permettaient là aussi historiquement à peu près toutes les fantaisies en matière de Date, par exemple le très puissant FDATE, mais c'est du Dos 16 bits pur et dur, ce qui signifie en français qu'il n'y a aucun moyen de le faire fonctionner sous une architecture Windows 64 bits sauf éventuellement à passer par un émulateur Dos: https://archive.org/details/freesoftwarefordos_batch_fdate2

Il n'y a aucun moyen d'annuler les effets d'un batch sauf dans certains cas d'y prévoir des instructions conditionnelles et/ou de rediriger le premier batch vers d'autres (par exemple via CALL) selon des conditions particulières et bien sûr dans le cas général de programmer à des heures adaptées un deuxième batch qui viendra inverser les modifications du premier.

On ne sait rien de ce que doivent faire les batchs en question, on en perçoit mal l'intérêt d'une manière générale; s'ils s'agit d'adopter telle configuration selon Windows et mettant en jeu le registre, on a plus vite fait de disposer sur le bureau ou ailleurs de 2 fichiers REG aux effets inverses l'un de l'autre.

0
brucine Messages postés 18279 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 décembre 2024 2 702
16 août 2022 à 09:40

On a bien sûr un moyen graphique capillotracté d'aboutir au même résultat.

Il suffit de programmer la tâche X à commencer par exemple à 9h00 et la tâche -X à 9h15 et de répéter chacune des tâches toutes les 30 mn, en résultant l'exécution en alternance de la tâche est de son inverse toutes les 15 mn.

 

0
Utilisateur anonyme
16 août 2022 à 09:39

Bonjour

avec le planificateur, tu peux lancer ton action 1 fois par jour, puis la répeter toutes les 5, 10, 15,  .... minutes pendant un jour.


0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
17 août 2022 à 14:22

salut. merci mais ce n'est pas ce que je cherche. puisque dans ce cas c'est un horaire prédéfini de la journée qui est paramétré or j'aimerai que le lancement se fasse dans 1 h à partir de maintenant. donc s'il est 10h00 la tache se lance à 11h. mais s'il est 13h la tache doit se lancer à14h. Tout dépend du moment de création de tache. Tache créée au moment T, action à réaliser au moment T+1h.

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
17 août 2022 à 14:18

merci pour vosreponse. Merci brucine pour à nouveau me venir en aide :)

en fait ma demande fait suite à un autre post que j'ai créé pour insérer un mot de passe admin dans un batch chose que j'ai résolu grace à psexec (même si je dois avoir 2 fichiers pour faire l'action voulu)

Donc mon idée c'est de lancer une commande qui bloque l'accès au navigateur dans le parefeu puis de le réactiver au bout d'un certains temps, par exemple 1H. 

commande 1 ; netsh advfirewall firewall add rule action=block profile=any protocol=any enable=yes direction=%%x name=chrome program="C:\Program Files\Google\Chrome\Application\chrome.exe

commande 2 ; netsh advfirewall firewall delete rule name=chrome

Pourquoi faire cela? Car si on lance la premiere commande et que personne ne pense à lancer la deuxieme, alors l'acces internet est bloquer pour tout utilisateur se connectant au PC, meme si le PC est redémarré la regle du parefeu est conservée.

Pourquoi passer par une tache planifiée? parce que si je met une commande wait dans le meme batch et que l'utilisateur ferme la fenetre CMD  alors la tache inverse ne pourra pas avoir lieu.

voila pourquoi il me semble plus pertinent de planifier une tache directement à la sortie du batch pour que quoi qu'il arrive , au bout du temps imparti, l'appli se réactive bien

Et je vois que le planificateur ne permet pas cette fonction : a partir de maintenant lancer un compte a rebours au bout du quelle telle commande sera lancée.

Après s'il existe un logiciel permettant cette coupure temporelle ce serait bien aussi. J'ai trouvé par exemple NetDisabler qui permet bien de bloquer internet mais le soucis c'est qu'il ne permet pas un retour automatique à la normale au bout d'un certain temps.

0
brucine Messages postés 18279 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 décembre 2024 2 702
17 août 2022 à 15:07

Bonjour,

Peut-être en mettant une commande SLEEP en sandwich de chacune des opérations et à condition qu'elle accepte t=216000, mais ce ne sera plus une tâche planifiée mais un batch puisqu'on ne voit pas bien comment programmer une tâche planifiée à un heure de démarrage aléatoire.

https://ss64.com/nt/sleep.html

Le hic, c'est que SLEEP n'est pas par défaut sous Windows, il faut aller le chercher dans le 2003 Resource Kit:

https://web.archive.org/web/20200804140756/https://www.microsoft.com/en-us/download/details.aspx?id=17657

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > brucine Messages postés 18279 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 décembre 2024
17 août 2022 à 20:10

oui j'avais pensé à ça aussi, le pb c'est qu'une fenetre CMD qui reste ouverte comporte un risque d'être fermée. il aurait fallu éventuellement permettre d'empêcher sa fermeture par l'utilisateur

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 17 août 2022 à 16:05

Bonjour,

Voilà un script permettant de créer une tâche planifiée s'exécutant à T + 1 heure :

@echo off

for /f "tokens=1,2 delims=:" %%A in ('time /t') do set /a heure=%%A + 1 & set "minute=%%B"

SCHTASKS /Create /SC ONCE /TN EnableApp /TR "%USERPROFILE%\Desktop\Transfert_FTP.cmd" /ST %heure%:%minute% /RL HIGHEST /F

pause
exit


0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
26 août 2022 à 01:10

hello. petit bug avec cette commande qui coince dans certains cas. S'il est 13h45 pas de pb avec 'set heure=%%A+1' , la valeur récupérée pour débuter la tâche est 14h45. Mais s'il est 9h45, là il y a erreur car la commande récupère l'heure avec un seul chiffre là où le planificateur de tache attend 2 chiffres. En gros il va récupérer 9:45 mais il manque le zéro pour faire 09:45. il faut absolument un horaire sous la forme HH:MM

Idem pour les minutes s'il est 15h02 et qu'on paramètre la commande 'set minute=%%B+7' pour lancer la tâche dans 7 minutes, cela va calculer un début à 15:9 et donc ça plante. Une idée?

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
26 août 2022 à 01:20

C'est facile à corriger, je te recontacte ce soir car je suis très très occupé aujourd'hui.

1
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
26 août 2022 à 01:52
0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
27 août 2022 à 08:26

j'ai rajouté une commande if qui semble bien mettre le zéro devant pour les heures à 1 chiffre mais pourtant schtasks ne le prend pas en compte

for /f "tokens=1,2 delims=:" %%A in ('time /t') do set /a heure=%%A+1 & set "minute=%%B"

if "%heure:~0,1%" == " " set heure=0%heure:~0,2%

résultat :

c:\cmd>for /F "tokens=1,2 delims=:" %A in ('time /t') do set /a heure=%A+1 & set "minute=%B"

c:\cmd>set /a heure=08+1 & set "minute=19"

c:\cmd>IF "9" == " " SET heure=09

c:\cmd>SCHTASKS /Create /SC ONCE /TN EnableApp2 /TR "\\scripts\active_internet.bat" /RU "tout le monde" /ST 9:19 /RL HIGHEST /F

Erreur : heure de début incorrecte.

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
27 août 2022 à 10:24

Voilà une solution possible pour l'heure :

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "tokens=1,2 delims=:" %%A in ('time /t') do set /a heure=%%A+1 & set "minute=%%B"

set "heure=0!heure!" & set "heure=!heure:~-2!"
set "minute=0!minute!" & set "minute=!minute:~-2!"

echo ###!heure!:!minute!###

pause
0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
17 août 2022 à 20:08

merci pour cette proposition elle m'a l'air adaptée

pour tester j'ai mis 2minutes de délai  ; ..... do set /a minute=%%B +2 & set heure=%%A .....

ça fonctionne bien la tache se créé et lance la commande voulu. Me reste à convertir tout ça pour PSEXEC comme ce sera lancé sur un session utilisateur 

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
17 août 2022 à 23:42

La commande indique que la tache planifié est bien créée. mais au bout du temps imposé, le batch ne s'exécute pas . En tout cas pas en session utilisateur. C'est ok en admin uniquement. Même en utilisant PSEXEC. 

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 18 août 2022 à 01:41

Pas de problème de mon côté, j'arrive à modifier le pare-feu via un script lancé par une tâche planifiée elle-même créée par un script.

Tout ça dans une session utilisateur sans droits admin, mais je suis en local sur un windows 8.1 donc je n'utilise pas Psexec.

-

Est-ce que tu respectes bien les prérequis pour Psexec :

https://www.it-connect.fr/psexec-un-outil-incontournable-pour-les-sysadmins/#IV_Prerequis_de_PsExec

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
18 août 2022 à 12:09

oui pour psexec je n'ai pas de pb j'ai bien respecté les tutos en mettant le chemin dans les variables. Il fonctionne bien sur des sessions utilisateurs. Seul defaut à présent c'est l'execution d'une tache planifiée. Les compte utilisateurs dans mon cas sont dans un domaine (non active directory) avec plusieurs restrictions imposées par le registre

j'ai vu sinon sur un site qu'il faut autoriser les droits d'execution des taches planifiées pour les comptes utilisateurs.

https://superuser.com/questions/402070/run-task-scheduler-task-on-demand-from-limited-user-account-in-windows-7

Go to C:\Windows\System32\Tasks find the related task and assign "read and execute" rights to the user you want to be able to access it. Be sure to assign to "current object only." Then the task will be visible and runnable from the limited user, and it will work if you saved your credentials in it and checked "run whether user is logged on or not."

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 18 août 2022 à 13:10

Désolé mais je trouve cela superflu, j'ai refait des tests et je persiste à dire que la solution est l'exécution de la tâche via l'utilisateur SYSTEM.

-

Voilà comment rajouter l'utilisateur SYSTEM dans la création de la tâche :

SCHTASKS /Create /SC ONCE /TN EnableApp /TR "Transfert_FTP.cmd" /RU System /ST %heure%:%minute% /RL HIGHEST /F

Le script sera invisible, aucune fenêtre n'apparaîtra mais le pare-feu sera bien modifié.

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
18 août 2022 à 14:04

j'ai essayé en ajoutant le /RU system mais meme résultat le parefeu n'est pas modifié, la tache est bien créée mais ne se lance pas . Mon script que je planifie est celui ci 

psexec -accepteula -u domain\admin -p mdp -d cmd /c \\%logonserver%\netlogon\scripts\active_internet.bat

et le fichier .bat en question est : netsh advfirewall firewall delete rule name=chrome

Rien à modifier dans les conditions ou paramètres de la taches?

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
Modifié le 18 août 2022 à 14:15

Pourrais-tu montrer le contenu du fichier C:\windows\system32\tasks\EnableApp

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10 > barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024
18 août 2022 à 15:43

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2022-08-18T15:34:56</Date>
    <Author>CCLAUDEL\admin</Author>
    <URI>\EnableApp</URI>
  </RegistrationInfo>
  <Triggers>
    <TimeTrigger>
      <StartBoundary>2022-08-18T15:35:00</StartBoundary>
      <Enabled>true</Enabled>
    </TimeTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <RunLevel>HighestAvailable</RunLevel>
      <UserId>CCLAUDEL\admin</UserId>
      <LogonType>InteractiveToken</LogonType>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>false</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT10M</Duration>
      <WaitTimeout>PT1H</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>false</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>false</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>\\10.94.49.252\netlogon\scripts\active_internet.bat</Command>
    </Exec>
  </Actions>
</Task>

0
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918 > adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024
Modifié le 18 août 2022 à 17:48

Effectivement ça ne peut pas fonctionner puisque ton fichier indique que l'exécution de la tâche n'aura lieu que si l'utilisateur (CCLAUDEL\admin) est connecté :

<LogonType>InteractiveToken</LogonType>

D'où l'intérêt d'utiliser le compte SYSTEM qui désactivera automatiquement cette condition.

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
18 août 2022 à 12:26

du coup je tenterai bien, dans mon script après la commande de creation de tache planifiée d'ajouter des droits en lecture et execution à tout le monde à la tache située dans system32. Mais je sais pas trop comment, en utilisant le nom de la tache j'imagine. Ca donnerait ça ; 

icacls C:\windows\system32\tasks\EnableApp /grant "tout le monde":(OI)(CI)(RX,W)
0
brucine Messages postés 18279 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 17 décembre 2024 2 702
18 août 2022 à 13:04

Cela ne me semble pas avoir de rapport, puisqu'il s'agit d'attribuer dans la tâche planifiée des droits pour un utilisateur particulier alors que, a priori, la tâche c'est toi qui l'utilises et que je suppose que tu es administrateur.

Si tant est que cela fonctionne, on tomberait sur les mêmes travers qu'avec Psexec: l'élévation doit être faite avant le lancement du script.

0
adgm1 Messages postés 289 Date d'inscription jeudi 4 octobre 2007 Statut Membre Dernière intervention 1 décembre 2024 10
Modifié le 18 août 2022 à 15:44

en effet ca na pas fonctionné en ajoutant les droits lecture/ecriture pour tout le monde à la tache planifiée. ni même en ajoutant les droits au dossier tasks de system32.

En fait les commandes sont toujours lancés par des compte utilisateurs standard et non pas en admin. D'où l'utilisation de psexec qui permet d'élever les droits. ca marche bien pour les taches lancées en direct (un fichier .bat) mais ca coince quand l'utilisateur standard essaye de lancer la tache planifiée qui est pourtant bien créee (celle qui active le navigateur en supprimer les regles du parefeu)

0