IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

passage de variables VBScript


Sujet :

VBScript

  1. #1
    Membre habitué
    Homme Profil pro
    IGE
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : IGE
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Par défaut passage de variables VBScript
    Bonjour,
    Je souhaite convertir tous mes CD enregistrés de wave en mp3 pour les emporter en vacances.
    J'ai réalisé un script qui scan tous les répertoires et sous répertoires et liste les fichiers wave pour les convertir (en gardant l'original wave)

    Je n'arrive pas à passer une variable dans un script VBScript.
    Ma commande manuelle passe très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    'On Error Resume Next
     
    Const outFile = "file.txt"
    Path = "D:\Musique"
    Const wav = ".wav"
     
     
    Dim oFilesys
    Set oFilesys = CreateObject("Scripting.FileSystemObject")
    Set oFiletxt = oFilesys.CreateTextFile(outFile,True)
    Set Ws = CreateObject("Wscript.Shell")
     
    oFiletxt.WriteLine(List(path))
    oFiletxt.Close
     
    MsgBox "Script Termine !"
    Ws.Run outFile
     
    Function List(directory)
    On Error Resume next
        Set fsoFolder = CreateObject("Scripting.FileSystemObject")
        Set folder = fsoFolder.GetFolder(directory)
        Set subfolders = folder.SubFolders
        Set subfiles = folder.Files
     
        For each objFile in subfiles
     
    		titrewav = objFile.Path
    		if InStr(titrewav,".wav") > 0 then
     
    			oFiletxt.WriteLine(titrewav)
    			titremp3 = Replace(objFile.Path,"wav","mp3")
    			oFiletxt.WriteLine(titremp3)
    			D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i titrewav -ab 320k titremp3
     
    		End if
        Next
     
        For each objFolder in subfolders
            oFiletxt.WriteLine(objFolder.Path)
            List(objFolder) 'Appel récusive de la fonction List
        Next
     
    End Function
    Mais quand les fichiers sont paramétrés, ça ne fonctionne plus


    Le fichier de sortie contient les bons paramètres. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    D:\Musique\Chanson\Agnès Bihl\24 heurs dans la vie d'une femme\01-La sieste crapuleuse.wav
    D:\Musique\Chanson\Agnès Bihl\24 heurs dans la vie d'une femme\01-La sieste crapuleuse.mp3
    ...
    L'erreur est systématiquement dans la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i titrewav -ab 320k titremp3
    Alors que la ligne de commande suivante passe très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i "D:\Musique\Chanson\Agnès Bihl\24 heurs dans la vie d'une femme\01-La sieste crapuleuse.wav" -ab 320k "D:\Musique\Chanson\Agnès Bihl\24 heurs dans la vie d'une femme\01-La sieste crapuleuse.mp3"
    Si je retire la ligne ligne de transcodage, le script fonctionne... mais pas de transcodage bien sur!

    Je ne vois pas comment résoudre ce problème... Quelqu'un a-t-il une idée?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 520
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 520
    Par défaut
    il ne faudrait pas forcer de mettre le chemin entre guillemets (à cause des espaces et autres) comme tu le fait manuellement.
    ça serait bien aussi d'avoir l'erreur remontée, en général ça peut être très utile pour comprendre le problème.

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Salut

    Au minimum votre ligne 35 n'a pas la bonne syntaxe
    D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i titrewav -ab 320k titremp3 pas bon
    "D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i" & titrewav & "-ab 320k" & titremp3 de façon a passer le contenu des variables non pas le nom de ses variables
    Je penserai à un code du genre suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    'On Error Resume Next
     
    Const outFile = "file.txt"
    Path = "D:\Musique"
    Const wav = ".wav"
     
     
    Dim oFilesys
    Set oFilesys = CreateObject("Scripting.FileSystemObject")
    Set oFiletxt = oFilesys.CreateTextFile(outFile,True)
    Set Ws = CreateObject("Wscript.Shell")
     
    oFiletxt.WriteLine(List(path))
    oFiletxt.Close
     
    MsgBox "Script Termine !"
    Ws.Run outFile
     
    Function List(directory)
    On Error Resume next
        Set fsoFolder = CreateObject("Scripting.FileSystemObject")
        Set folder = fsoFolder.GetFolder(directory)
        Set subfolders = folder.SubFolders
        Set subfiles = folder.Files
    	Dim cmd As String
     
        For each objFile in subfiles
     
    		titrewav = objFile.Path
    		if InStr(titrewav,".wav") > 0 then
    			oFiletxt.WriteLine(titrewav)
    			titremp3 = Replace(objFile.Path,"wav","mp3")
    			oFiletxt.WriteLine(titremp3)
    			rem D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i titrewav -ab 320k titremp3
     			cmd="D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i" & titrewav & "-ab 320k" & titremp3
    			Ws.Run cmd
    		End if
        Next
     
        For each objFolder in subfolders
            oFiletxt.WriteLine(objFolder.Path)
            List(objFolder) 'Appel récusive de la fonction List
        Next
     
    End Function
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre habitué
    Homme Profil pro
    IGE
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : IGE
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Par défaut
    Merci pour vos réponses.
    Du coup, j'ai essayé les commandes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    appPath = "D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg"
    fic_in = "D:\Musique\Chanson\Agnès Bihl\24 heures dans la vie d'une femme\01-La sieste crapuleuse.wav"
    fic_out = "D:\Musique\_Utilitaires\01-La sieste crapuleuse.mp3"
     
    ordre = appPath & " -i " & chr(34) & fic_in & chr(34) & " -ab 320k " & chr(34) & fic_out & chr(34) 
    shShell.Run ordre
    en écrivant le paramètre ordre dans un fichier, j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i "D:\Musique\Chanson\Agnès Bihl\24 heures dans la vie d'une femme\01-La sieste crapuleuse.wav" -ab 320k "D:\Musique\_Utilitaires\01-La sieste crapuleuse.mp3"
    Plus d'erreur à l’exécution mais pas de conversion!
    j'ai essayé la ligne de commande ci-dessus dans uns fenêtre CMD (dos) et cette commande passe très bien!
    Comprends pas

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    appPath = "D:\Musique\_Utilitaires\ffmpeg-7.0.2-full_build\bin\ffmpeg -i """
    fic_in = "D:\Musique\Chanson\Agnès Bihl\24 heures dans la vie d'une femme\01-La sieste crapuleuse.wav"
    fic_out = "D:\Musique\_Utilitaires\01-La sieste crapuleuse.mp3"""
     
    ordre = appPath & fic_in & chr(34)
    ordre = ordre & " -ab 320k " & chr(34)
    ordre = ordre & fic_out
    shShell.Run ordre
    rem msgbox  ordre
    peut être
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre habitué
    Homme Profil pro
    IGE
    Inscrit en
    Mai 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : IGE
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2015
    Messages : 8
    Par défaut
    Bien tenté....
    mais non, je pense que c'est avec l'ordre suivant que ça ne fonctionne pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run ordre
    il faudrait que je trouve le moyen de voir ce que retourne WsShell.Run - code d'erreur ou autre

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 520
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 520
    Par défaut
    Tu vois un message d'erreur en l'exécutant en ligne de commande ?
    J'ai dans un coin de la tête que ça pourrait venir de l'accent sur le e de Agnès et donc du numéro de page de codes du terminal
    en .bat, on doit faire un chcp 1252 avant de pouvoir les caractères accentués et refaire un chcp 850 pour revenir au paramètrage initial.

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. Passage de variable dans un lien asp
    Par VirginieGE dans le forum ASP
    Réponses: 4
    Dernier message: 27/07/2004, 10h06
  3. [Kylix] passage de variable en Libc
    Par zheng dans le forum EDI
    Réponses: 11
    Dernier message: 06/05/2004, 14h14
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. [langage] Passage de variables...
    Par martijan dans le forum Langage
    Réponses: 8
    Dernier message: 30/07/2003, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo