ligne de commande, tronquage de paramètres

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
apsix
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 sept. 2016 00:00
Status : Hors ligne

ligne de commande, tronquage de paramètres

#1

Message 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.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: ligne de commande, tronquage de paramètres

#2

Message par walkson »

Bonjour,
A tout hasard: & '"' & $monchemin & '"' & en écrivant comme ' " '
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
apsix
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 sept. 2016 00:00
Status : Hors ligne

Re: ligne de commande, tronquage de paramètres

#3

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

Re: ligne de commande, tronquage de paramètres

#4

Message par orax »

Dans ce cas il faut nous montrer la partie de code qui ne fonctionne pas.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
apsix
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 sept. 2016 00:00
Status : Hors ligne

Re: ligne de commande, tronquage de paramètres

#5

Message 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
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: ligne de commande, tronquage de paramètres

#6

Message 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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
apsix
Niveau 1
Niveau 1
Messages : 5
Enregistré le : sam. 03 sept. 2016 00:00
Status : Hors ligne

Re: ligne de commande, tronquage de paramètres

#7

Message 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.
Répondre