[..] Erreur sur execution en ligne de commande

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Flop
Niveau 3
Niveau 3
Messages : 48
Enregistré le : lun. 20 oct. 2008 16:48
Status : Hors ligne

[..] Erreur sur execution en ligne de commande

#1

Message par Flop »

Bonjour à tous, j'ai récuperer ce code ici je crois, mais impossible de retrouver le topic :

voici le code qui me permet de recuperer les arguments lancer en ligne de commande

Code : Tout sélectionner

; -------------------------------------------------------------------------
; ----------  FONCTIONS --------------------------------------------------
; --------------------------------------------------------------------------

; // script d'identification ligne de commande.
Func OptArgs($args, $opt, $default)
    $arraySize = UBound($args)
    If $arraySize <= 0 Then
        Return $default
    EndIf
    For $i = 0 to $arraySize-1
        If StringRegExp($args[$i], "^[-/]"&$opt&"$") Then
            Return True
        EndIf
        If StringRegExp($args[$i], "^[-/]"&$opt&"[:=]") Then
            Return StringRegExpReplace($args[$i],"^[-/]"&$opt&"[:=]","")
        EndIf
    Next
    Return $default
EndFunc
 
et l'autre partie
; // définition des variables récuperé en ligne de commande
$image = OptArgs($CmdLine, "c", "no_image") ; récupere l'emplacement de l'image
et enfin la facon dont je passe mes arguments :

Code : Tout sélectionner

c:\mon script.exe /c={image}
 
PS : {image} etant une variable envoyé par un autre programme.

ca fonctionne très bien, si je met un message box pour tester ma variable $image

je vais obtenir par ex : c:\mes images\mon image que je veux voir.jpg

mais mon problème et celui ci

si l'image s'appelle "mon image que je veux voir (2).jpg" alors la variable $image prends la valeur "mon image que je veux voir" donc bien sur ca ne s'affiche pas, la seule facon que j'ai trouver de contourner ce problème et de changer ma facon de passer la variable, mais ca ne me plait pas comme solution, comment optimiser ca ;

avec ca ca marche et j'ai bien "mon image que je veux voir (2).jpg" comme variable $image
la seule difference c'est les " qui entoure {image}

Code : Tout sélectionner

c:\mon script.exe /c=[b]"[/b]{image}[b]"[/b]
 
Flop
Niveau 3
Niveau 3
Messages : 48
Enregistré le : lun. 20 oct. 2008 16:48
Status : Hors ligne

Re: [..] Erreur sur execution en ligne de commande

#2

Message par Flop »

Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11798
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Erreur sur execution en ligne de commande

#3

Message par Tlem »

Si vous n'avez qu'un seul argument possible à la fois, je vous conseil d'utiliser plutôt la variable $CmdLineRaw, qui renvois l'intégralité de la ligne de commande.

Code : Tout sélectionner

If $CmdLine[0] Then
    MsgBox(64, "Info", "La ligne de commande globale est : " & @CRLF & $CmdLineRaw)
EndIf
Ensuite il vous suffit de ne garder que l'essentiel. ;)

Par contre, si vous devez utiliser plusieurs arguments en même temps, il vous faut obligatoirement séparer chaque argument par des espaces.
Donc en cas de chaîne contenant des espaces, il faut mettre l'argument entre guillemets simple car si la chaîne contient aussi des guillemets double alors c'est la cata ...

Code : Tout sélectionner

c:\mon script.exe /c='argument_1' /x='argument_2' /z='argument_3'
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
SebastienAdam
Niveau 1
Niveau 1
Messages : 9
Enregistré le : mar. 07 août 2007 20:33
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Erreur sur execution en ligne de commande

#4

Message par SebastienAdam »

Flop a écrit :

Code : Tout sélectionner

c:\mon script.exe /c=[b]"[/b]{image}[b]"[/b]
 
Est-ce que tu as essayé:

Code : Tout sélectionner

c:\mon script.exe [b][color=#FF0000]"[/color][/b]/c={image}[b][color=#FF0000]"[/color][/b]
 
Répondre