Page 1 sur 1

ligne de commande, tronquage de paramètres

Posté : sam. 03 sept. 2016 13:37
par apsix
Bonjour,

je suis un débutant en AutoIt et je bute sur un problème de tronquage de variable.

Je souhaite utiliser 'Flac.exe' qui fonctionne en ligne de commande. Je récupère donc le chemin complet du fichier à traiter avec FileOpenDialog et je le stocke dans une variable (j'ai vérifié le bon fonctionnement avec une MsgBox). J'utilise Run pour lancer l’exécutable, lui associer des paramètres et enfin lui coller le chemin du fichier via la variable. Ça marche tant qu'il n'y a pas d'espaces dans le chemin mais s'il y a un espace alors la suite du chemin est tronquée et l'exécution ne se fait pas, bien sûr.

En gros la variable contient bien la totalité du chemin mais il est tronqué au 1er espace rencontré lorsque je l'ajoute en paramètre dans ma fonction Run.

Merci de votre aide.

Re: ligne de commande, tronquage de paramètres

Posté : sam. 03 sept. 2016 13:49
par walkson
Bonjour,
A tout hasard: & '"' & $monchemin & '"' & en écrivant comme ' " '

Re: ligne de commande, tronquage de paramètres

Posté : dim. 04 sept. 2016 18:30
par apsix
J'ai déjà essayé de rajouter des guillemets mais les variables deviennent des chaines de caractères et ce n'est plus le contenu de la variable qui est utilisé mais son orthographe.

j'ai essayé aussi ShellExecute sans plus de succès puisque plus rien ne s'exécute.

Re: ligne de commande, tronquage de paramètres

Posté : dim. 04 sept. 2016 18:36
par orax
Dans ce cas il faut nous montrer la partie de code qui ne fonctionne pas.

Re: ligne de commande, tronquage de paramètres

Posté : dim. 04 sept. 2016 19:30
par apsix
Je n'étais pas sur mon ordi. Voici le code :

Code : Tout sélectionner

Func AlxF1()

	Local $AlxVarCheminB1 = FileOpenDialog("Sélectionnez...", @MyDocumentsDir, "wav (*.wav)", $FD_FILEMUSTEXIST)
	Local $AlxCheminFlac = "flac\flac.exe"
	Local $AlxFlacLevel = "-8"
	Local $AlxFinalB1 = $AlxCheminFlac & " " & $AlxFlacLevel & " " & $AlxVarCheminB1

	If @error Then
		MsgBox($MB_SYSTEMMODAL, "", "Pas de sélection")
	Else
		Run (@ComSpec & " /k " & $AlxFinalB1)
	EndIf

EndFunc

Re: ligne de commande, tronquage de paramètres

Posté : dim. 04 sept. 2016 21:03
par walkson
Bonsoir,
Pourquoi passer par @ComSpec, lancez l’exécutable directement
Je ne suis pas très à l'aise avec flac.exe que je ne connais pas mais ce test marche
;https://xiph.org/flac/documentation_tools_flac.html#flac_options_output_name
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>

$pid = Run("flac.exe -H ", @WorkingDir, @SW_HIDE,$STDOUT_CHILD)
    Local $sOutput = ""
   $file = FileOpen("ttt.txt",2+8)
    While 1
        $sOutput = StdoutRead($pid)
        If @error Then ; Exit the loop if the process closes or StdoutRead returns an error.
            ExitLoop
        EndIf
        ;MsgBox($MB_SYSTEMMODAL, "Stdout Read:", $sOutput)
      FileWrite($file,$sOutput)
    WEnd


   FileClose($file)
Essayez ceci
#include <AutoItConstants.au3>
#include <MsgBoxConstants.au3>
AlxF1()
Func AlxF1()

   Local $AlxVarCheminB1 = FileOpenDialog("Sélectionnez...", @MyDocumentsDir, "wav (*.wav)", 2)
   Local $AlxCheminFlac = "flac.exe"
   Local $AlxFlacLevel = "-8"
   Local $AlxFinalB1 = $AlxCheminFlac & " " & $AlxFlacLevel & ' "' & $AlxVarCheminB1 & '"'
MsgBox(0,"",$AlxFinalB1)
   If @error Then
      MsgBox($MB_SYSTEMMODAL, "", "Pas de sélection")
   Else
     $pid = Run ( $AlxFinalB1)
   EndIf

EndFunc

Re: ligne de commande, tronquage de paramètres

Posté : dim. 04 sept. 2016 21:28
par apsix
La mise entre guillemets de la variable stockant FileOpenDialog a permis d'avoir le chemin complet, espaces compris. Mais j'ai dû rajouter @ComSpec à Run sinon rien ne se passe.

Merci pour votre aide.