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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#1

Message 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
Modifié en dernier par jguinch le mar. 25 nov. 2014 16:07, modifié 2 fois.
Raison : Ajout de la balise Spoiler
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

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

#2

Message 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.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#3

Message par jguinch »

dans ton script, je vois la partie suivante :
► Afficher le texte
$aCheckg n'est pas un tableau...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

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

#4

Message 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.
Y01
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#5

Message 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]"
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#6

Message 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")
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

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

#7

Message par walkson »

Bonsoir,
En complément d'Orax, il y a _XMLDomWrapper.au3
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#8

Message 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
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#9

Message 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)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#10

Message 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]?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#11

Message 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)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#12

Message par eyoyo »

Ok. Je teste ca demain a l'aube. Merci
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

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

#13

Message par jguinch »

Le soleil se lève à quel heure chez toi ? :D
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#14

Message 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.
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#15

Message 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.
Y01
Niveau 5
Niveau 5
Messages : 160
Enregistré le : lun. 17 nov. 2014 10:46
Status : Hors ligne

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

#16

Message 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.
Y01
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

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

#17

Message 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.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
eyoyo
Niveau 2
Niveau 2
Messages : 16
Enregistré le : mer. 13 févr. 2013 14:15
Status : Hors ligne

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

#18

Message par eyoyo »

Je vais essayer de mettre les chemins en dur et de corriger ma boucle de ping. Merci vous m'aidez beaucoup.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

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

#19

Message 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.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Répondre