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.
ligne de commande, tronquage de paramètres
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- walkson
- 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
Bonjour,
A tout hasard: & '"' & $monchemin & '"' & en écrivant comme ' " '
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)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: ligne de commande, tronquage de paramètres
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.
j'ai essayé aussi ShellExecute sans plus de succès puisque plus rien ne s'exécute.
- orax
- 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
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)
Re: ligne de commande, tronquage de paramètres
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
- walkson
- 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
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
Essayez ceci
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)
#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)
#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
#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)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: ligne de commande, tronquage de paramètres
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.
Merci pour votre aide.