Page 1 sur 1

[R] Problème de syntaxe pour lire une ligne de commande

Posté : mar. 14 avr. 2009 15:00
par Iste
Pouwa, ca c'est du titre...
Salutations,

J'ai des pitits problemes avec cette ligne

Code : Tout sélectionner

Run(@AutoItExe & ' /AutoIt3ExecuteLine  "MsgBox(0, [color=#FF0000]''[/color]Salut à tous![color=#FF0000]''[/color], [color=#FF0000]''[/color]Coucou![color=#FF0000]''[/color])"')
Ca marche tres bien, mais si je donne une ligne contenant une mauvaise syntaxe (à cause des triple guimets les un dans les autres) béh ca plante.

D'ou ma question, comment faire pour "convertir" des lignes de comande classique, en lignes qui seront toujours acceptées par cette fonction ?
J'avais pensé à remplacer les " par des '', mais si j'ai des ' dans des " je suis coinsé :/ (vous suivez ? ^^)

Voila, c'est pas un bien gros probleme, mais je prefere prevenir que guerir (surtout que mon script s'execute sur des machine dont j'ai pas accé souvent)

Merci d'avance !

Re: [..] Petit probleme de syntax pour lire une ligne de command

Posté : mer. 15 avr. 2009 03:22
par orax
Il faut mettre 4 guillemets dans le code qui devra être exécuté. Du moins, c'est comme ça que je ferais.

Code : Tout sélectionner

; essayez ça pour voir ce qui sera exécuté (sinon je trouve que c'est casse-tête)
$a=" /AutoIt3ExecuteLine ""MsgBox(0, """"Salut à tous!"""", """"Coucou!"""")"""
MsgBox(0,"",$a)

; ceci fonctionne chez moi
Run(@AutoItExe & " /AutoIt3ExecuteLine ""MsgBox(0, """"Salut à tous!"""", """"Coucou!"""")""")
:arrow: Edité : je viens de me rendre compte, en lisant le message d'ani, que mon exemple est vraiment mauvais et il est... un peu lourd en guillemets :mrgreen: Je n'avais pas vu l'exemple dans la doc, qui est plus cohérent.

Re: [..] Petit probleme de syntax pour lire une ligne de command

Posté : mer. 15 avr. 2009 11:38
par ani
wouep ;)
mais non ;) , me rappel du vb ou y avait ce délire ^^', soit

comment procéder :o (voir documentation => running script | fin de page)
Tout caractère double quote se voit transformer en 2*simple quote
La ligne a executer doit se trouver entre Double quote "msgbox......"
La cmd final doit se trouver entre de simple quote ' /aut.... "msgbox(0,''2*SimpleQuote'',''2*SimpleQuote'')"'

Si Tu as des variables déclaré il faut les indiquer dans les simplequote et pas en dehors .
Exemple : Rouge Double quote | Bleu simple quote.

Code : Tout sélectionner

Run(@AutoItExe & [color=#0000FF]'[/color] /AutoIt3ExecuteLine [color=#FF0000]"[/color]Dim $a = [color=#0000FF]''[/color]Mot[color=#0000FF]''[/color] & @CR & MsgBox(0,[color=#0000FF]''[/color]C_TesT[color=#0000FF]''[/color],Binary([color=#0000FF]''[/color]$a[color=#0000FF]''[/color])[color=#FF0000]"[/color][color=#0000FF]'[/color])

Pourrait tu nous indiquer quelque exemple de cmd non fonctionnel ?
merci

bonne continuation ;)

Re: [..] Petit probleme de syntax pour lire une ligne de command

Posté : mer. 15 avr. 2009 17:15
par Iste
donc un simple StringReplace($var,'"',"''") fonctionerait ?

Sinon, c'est en lisant la doc et en tombant sur :

Code : Tout sélectionner

Run(@ComSpec & " /c " & 'commandName', "", @SW_HIDE)
que je me suis posé des question. Car j'utilise /AutoIt3ExecuteLine pour pouvoir executer des ligne de commandes "oubliées" lors de la compilation.

Mais sinon, je sais qu'il y a une alternative a /AutoIt3ExecuteLine qui permet d'executer tout un script, et apres avoir testé, ya pas ce genre de probleme. C'est juste que dans mon cas c'est plus "pratique" d'utiliser une seule ligne, mais bon ben, sinon, tant pis.

Merci pour vos réponses !