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

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

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

#1

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

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

#2

Message 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.
Modifié en dernier par orax le mer. 15 avr. 2009 16:28, modifié 2 fois.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

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

#3

Message 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 ;)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

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

#4

Message 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 !
Signez ici
Répondre