Page 1 sur 1

[..] Erreur sur execution en ligne de commande

Posté : ven. 07 nov. 2008 10:47
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]
 

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

Posté : ven. 07 nov. 2008 13:25
par Flop

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

Posté : ven. 07 nov. 2008 18:47
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'

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

Posté : sam. 08 nov. 2008 08:05
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]