[VBS] taches planifiees
Le
Claude (F)

Bonsoir
Imaginons un script lancé à partir d'une tâche planifiée (du style
wscript d:testmonscript.vbs), existe-t-il un moyen de connaitre le nom
de la tâche planifié qui a lancé le script?
Merci pour vos lumières
Imaginons un script lancé à partir d'une tâche planifiée (du style
wscript d:testmonscript.vbs), existe-t-il un moyen de connaitre le nom
de la tâche planifié qui a lancé le script?
Merci pour vos lumières
| Bonsoir
Bonsoir,
| Imaginons un script lancé à partir d'une tâche planifiée (du style
| wscript d:testmonscript.vbs), existe-t-il un moyen de connaitre le
| nom de la tâche planifié qui a lancé le script?
Oui aux conditions suivantes :
- La tâche est planifiée avec la commande cmd at ou avec WMI
- Le script s'exécute sur Windows 2000/XP (de préférence XP)
- Une seule tâche planifiée exécute le script 'monscript.vbs'
Si ces trois conditions sont vérifiées alors c'est possible.
J'attends votre retour pour vous donner un exemple.
Cependant, une solution de contournement consiste à spécifier le nom de
la tâche planifiée comme argument du script 'monscript.vbs'. Le script
pourra alors récupérer le nom de la tâche grâce à la lecture de ses
arguments.
--
Gilles LAURENT
http://glsft.free.fr
wscript car il y a des arguments à envoyer.
(C'est relatif à ce petit script : http://scriptus.free.fr, possesseurs
de Freebox, il peut peut être vous interesser)
Au lieu d'utiliser des arguments dans la ligne de commande, par exemple
7 et 120, je pensais nommer ma tâche planifiée ENREG-7-120.job et ainsi
récupérer ces arguments dans le nom de tâche. C'est juste une piste que
j'essaye de creuser car mon script fonctionne bien actuellement !
En tous cas merci de t'interesser à ce cas.
Rien à voir avec le scripting, mais répond à ton besoin.
http://adsltv.free.fr/
(http://www.tvfreeplayer.com/?module=multi) mais je suis un
inconditionnel des tâches planifiées !
[...]
| Au lieu d'utiliser des arguments dans la ligne de commande, par
| exemple 7 et 120, je pensais nommer ma tâche planifiée
| ENREG-7-120.job et ainsi récupérer ces arguments dans le nom de
| tâche. C'est juste une piste que j'essaye de creuser car mon script
| fonctionne bien actuellement !
+++ Mise en oeuvre et tests
1- Copier le script VBScript ci-dessous
2- Lui attribuer un nom quelconque avec l'extension .vbs
3- Planifier son exécution avec CScript.exe ou WScript.exe
4- Exécuter la tâche
=> Le nom de la tâche devrait apparaitre dans une msgbox ;-)
--- Couper ici ---
Option Explicit
PreProcess (WScript.Arguments)
Dim strId: strId = WScript.Arguments(0)
WScript.Sleep (500)
MsgBox "[" & GetTaskName (Hex (CInt(strId))) & "]"
'--------------------------------------
Sub PreProcess (oArgs)
Dim oSh
Dim strId
Set oSh = CreateObject ("WScript.Shell")
If oArgs.Count = 0 Then
Randomize
strId = Round (Rnd () * 32768)
oSh.Run Right (WScript.FullName, 11) & " " & _
WScript.ScriptFullName & " " & strId
WScript.Quit (strId)
End If
End Sub
'--------------------------------------
Function GetTaskName (strId)
Dim oSh, oFs, oRe, oFile
Dim strLogs
Set oSh = CreateObject ("WScript.Shell")
Set oFs = CreateObject ("Scripting.FileSystemObject")
Set oRe = New RegExp
oRe.IgnoreCase = True
oRe.Pattern="""(.*?).job""(?:.*n){2}.*((" & strId & "))."
Set oFile = oFs.OpenTextFile ( _
oSh.ExpandEnvironmentStrings ( _
oSh.RegRead ( _
"HKLMSoftwareMicrosoftSchedulingAgentLogPath" _
) _
), _
1, False, -1)
strLogs = oFile.ReadAll
If oRe.Test (strLogs) Then
GetTaskName = oRe.Replace(oRe.Execute (strLogs)(0),"$1")
End If
End Function
--- Couper ici ---
--
Gilles LAURENT
http://glsft.free.fr
de nouvelles perspéctives !
J'ai intégré ton script ci-dessous au mien, et ça fonctionne à
merveille, merci encore !!
http://scriptus.free.fr/MiniEnreg/
| Bonjour
Bonjour,
| J'ai intégré ton script ci-dessous au mien, et ça fonctionne à
| merveille, merci encore !!
|
| http://scriptus.free.fr/MiniEnreg/
Merci pour ce retour ;-)
--
Gilles LAURENT
http://glsft.free.fr