Page 1 sur 1

[..] Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 15:25
par eyoyo
Bonjour,

J'ai écrit un long script qui me donnait entière satisfaction jusqu'à ce j'essaie de le lancer automatiquement avec le planificateur de tâche de Windows 7.
Lorsque c'est le planificateur de tâche qui lance le script j'obtiens l'erreur suivante:
Line 163
$acoeffg &= $aCheckg[0]
$acoeffg &= $aCheckg^ ERROR
Error: Subscript used ou non-accessible variable

Je précise que le script fonctionne très bien lorsque je ne le lance pas avec le planificateur de tâche de windows 7.
Voici une partie du code et j'ai mis les passages importants en rouge:
► Afficher le texte
Ca semble venir de mon utilisation de _FileReadToArray mais je ne vois pas comment corriger ça.
J'ai également pensé à déclarer les variable acoeff* en "Global" mais ça ne change pas mon problème dans le "task scheduler" de windows 7.
Je trouve assez déroutant que le programme n'est pas le même comportement lorsque je double clique dessus et lorsque je le lance avec le planificateur et je coince.
Pour info cette partie du script va lire des valeurs entre des balises < > dans des fichiers XML pour créer un entête dans un fichier de données.
Merci pour votre précieuse aide

Lionel

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 15:36
par DimVar
Bonjour,

J'ai deja eu des pb similaires avec les droits utilisateurs de la tache planifiée.
Declaré comme admin local ?

Ou éventuellement utiliser "isarray" pour vérifier qu'une fonction retourne bien un tableau...

Ou encore essayer de compiler en CUI (plutot que GUI)

Cdlt.

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 16:06
par jguinch
dans ton script, je vois la partie suivante :
► Afficher le texte
$aCheckg n'est pas un tableau...

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 16:07
par Y01
Le script est lancé avec ton compte, le compte administrateur ou avec le compte SYSTEM ?

Je pense qu'en choisissant un compte diffèrent, le comportement de ton script le sera aussi.

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 17:40
par eyoyo
jguinch a écrit :dans ton script, je vois la partie suivante :
► Afficher le texte
$aCheckg n'est pas un tableau...
Oula je me rends compte que j'ai mélangé deux solutions à mon problème au fur et à mesure de mon développement.
le _fileread et le _filereadtoarray.
Le hic c'est que je ne comprends pas bien comment lire les valeurs comprises entre les chants "<G> <\G> etc..." de mon fichier XML pour les écrire dans un autre fichier
Je n'y arrive que comme ça:

Code : Tout sélectionner

$ainput = FileRead($45calibfilepath)
Local $acoeffg = ""
Local $afArray = ""
$aCheckg = _StringBetween($ainput, "<G>", "</G>")
$acoeffg = $aCheckg [0]
MsgBox(0, "coeff G", $acoeffg)
Savez-vous comment je peux coder cela autrement ?
Car le problème semble venir de là. J'ai copié tous mes fichiers sous un autre compte Admin créé pour l'occasion et le problème persiste.
Le planificateur de tâche ne semble pas aimer le "$aCheckg [0]"

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 17:47
par orax
eyoyo a écrit :Savez-vous comment je peux coder cela autrement ?
Si le fichier XML est assez complexe, il y a MSXML qui est fait pour ça.

Code : Tout sélectionner

$xmlDoc = ObjCreate("Msxml2.DOMDocument.6.0")

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 18:06
par walkson
Bonsoir,
En complément d'Orax, il y a _XMLDomWrapper.au3

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 18:53
par eyoyo
Le fichier xml est tout bête. J'ai le même problème pour aller lire des nombres entre des balises dans un fichier quelconque et les écrire dans un autre fichier. J'ai du mal à faire ca différemment que dans mon dernier exemple. Je note votre outil mais comment faire simple pour lire un chiffre entre deux flags dans un fichier et l'écrire dans un autre fichier?
Merci

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 19:16
par orax
L'erreur pourrait aussi survenir avant, avec FileRead par exemple.

Code : Tout sélectionner

$ainput = FileRead($45calibfilepath)
If @error Then Exit MsgBox(0, 'FileRead', @error)
Local $acoeffg = ""
Local $afArray = ""
$aCheckg = _StringBetween($ainput, "<G>", "</G>")
If @error Then Exit MsgBox(0, '_StringBetween', @error)
$acoeffg = $aCheckg[0]
MsgBox(0, "coeff G", $acoeffg)

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 20:34
par eyoyo
Le fileread pourrait planter pour une histoire de droits uniquement sous le planificateur et pas quand je lance le script moi-même?
Aucune idée pour éviter le $aCheckg[0]?

Re: [..]Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 21:23
par jguinch
Quand tu auras testé ce que propose orax, tu auras certainement avancé.
Si le code plante sur $aCheckg[0], c'est que $aCheckg n'est pas un tableau. Donc tu as forcément une erreur plus haut (FileRead ou _StringBetween)

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mar. 25 nov. 2014 21:57
par eyoyo
Ok. Je teste ca demain a l'aube. Merci

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mer. 26 nov. 2014 08:47
par jguinch
Le soleil se lève à quel heure chez toi ? :D

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mer. 26 nov. 2014 09:22
par eyoyo
J'étais au boulot à 7h30!
Le test d'erreur mentionné plus n'a rien donné. Il n'y pas d'erreur sur le fileread ou le stringbewteen et le coefficient est bien lu.
Le programme tourne mais pas dans le planificateur de tâche de windows.

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mer. 26 nov. 2014 13:12
par eyoyo
Je viens de faire de nouveaux tests et il semblerait que le problème se pose aussi dans la lecture du nom des fichiers (toujours avec le planificateur uniquement).
Cette fois le programme ne plante pas mais il ne récupère pas non plus le nom des fichiers.

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mer. 26 nov. 2014 13:44
par Y01

Code : Tout sélectionner

$currentdir= @WorkingDir
En lançant l'application avec le gestionnaire de tâche le @WorkingDir passe à "C:\Windows\Tasks" non ?

EDIT : Je rajouterai même que tu peux spécifier le WorkingDir dans ta tâche.

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : mer. 26 nov. 2014 15:51
par orax
Je pense qu'avec While $pingcisco <> 1 le routeur doit répondre en 1 ms maxi. Je ferais plutôt comme ça :

Code : Tout sélectionner

;Paramètres du routeur cisco
$ciscoip = "192.168.129.254"

;Test de la connexion au réseau
While Ping($ciscoip, 250) = 0 ; ping le routeur en boucle tant qu'il ne répond pas
    MsgBox(48, "Pas de réseau", "En attente du réseau", 60)
    Sleep(60000)
WEnd
Mais c'est juste un détail puisque l'erreur ne vient pas de là.

Si les fichiers sont dans le même répertoire que le script, tu peux utiliser @ScriptDir au lieu de @WorkingDir.

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : jeu. 27 nov. 2014 06:38
par eyoyo
Je vais essayer de mettre les chemins en dur et de corriger ma boucle de ping. Merci vous m'aidez beaucoup.

Re: [..] Bug avec le planificateur de tâche de Windows

Posté : jeu. 27 nov. 2014 08:37
par DimVar
Pour corroborer la réponse d'Orax, j'ai fait une bête msgbox avec @workingdir en tache planifiée, elle me renvoi "c:\windows\system32".

Cdlt, Dimvar.