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 :

Création d'une liste aléatoire en parcourant un fichier *.M3U


Sujet :

VBScript

  1. #21
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Bonjour sachadee,

    Ta version à l'air de donner quelque chose.

    Sinon, après 1200 clic sur ok, j'ai arrêté le script, trop de clics à faire...
    Une fenêtre MessageBox s'ouvre à chaque nouveau titre mp3.

    Par contre le fichier AleaListe.m3u est resté vide, peut être parce que j'ai tué le processus avant la fin.

    Merci de ton aide sachadee

  2. #22
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    J'ai corrigé le code, il y a vait un wscript.echo que j'ai oublié.

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  3. #23
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Bien joué Monsieur Sachadee,

    Ton code fonctionne presque.

    La liste AleaListe.m3u est enrichie, mais il manque le chemin d'accès au fichier, le titre seul apparait.
    A la fin du VBS, une fenêtre d'erreur s'ouvre:

    Nom : 2016-10-22_185756.png
Affichages : 430
Taille : 46,3 Ko

    Désolé...

  4. #24
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Ok restest ceçi pour le chemin complet :

    Code vbs : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    dim Myarr
    Myarr=array()
     
     
    objStartFolder = "d:\Music"
    outFile="AleaListe.m3u"
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(objStartFolder)
    Set objoutFile = objFSO.CreateTextFile(outFile,True)
     
    '----Traitement du Folder principal
     
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    	t = tri_extension(ObjFolder,objFile)
    Next
     
    '----Traitement des sous folder
     
    ShowSubfolders objFSO.GetFolder(objStartFolder)
     
    Sub ShowSubFolders(Folder)
        For Each Subfolder in Folder.SubFolders
            Set objFolder = objFSO.GetFolder(Subfolder.Path)
            Set colFiles = objFolder.Files
            For Each objFile in colFiles
                t = tri_extension(objFolder,objFile)
            Next
            ShowSubFolders Subfolder
        Next
     
    End Sub
     
    '--------- Création de l'array selon l'extension
     
    Function tri_extension(objFolder,objFile)
       If Right(objFile.Name, 3) = "mp3" Or _
            Right(objFile.Name, 3) = "mp2" Or _
            Right(objFile.Name, 3) = "wma" Or _
            Right(objFile.Name, 3) = "wav" Or _
            Right(objFile.Name, 3) = "ogg" Or _
            Right(objFile.Name, 3) = "mp4" Or _
            Right(objFile.Name, 3) = "flv" Or _
            Right(objFile.Name, 3) = "mkv" Or _
            Right(objFile.Name, 3) = "wmv" Or _
            Right(objFile.Name, 3) = "avi" Or _
            Right(objFile.Name, 4) = "flac" Then
    			ReDim Preserve MyArr(UBound(MyArr) + 1) '-- on augmente la taille de l'array
    			MyArr(UBound(MyArr)) = objfolder.path&"\"&objFile.Name '-- On ajoute l'élement
    		End if
    End function
     
     
    Shuffle_and_write(MyArr)
    wscript.echo "terminer"
     
    '--------On shuffle l'array et on écrit le fichier de sortie
     
    Function Shuffle_and_write(MyArray())
        objoutFile.Write "#EXTM3U" & vbCrLf
        Dim I, J, Temp
        Randomize
        For I = LBound(MyArray) To UBound(MyArray)
            J = CLng(((UBound(MyArray) - I) * Rnd) + I)
            If I <> J Then
                Temp = MyArray(I)
                MyArray(I) = MyArray(J)
                MyArray(J) = Temp
            End If
        Next
        counta=0
    	while counta <> Ubound(Myarray)+1
    		objoutFile.Write myarray(counta) & vbCrLf
    		counta = counta + 1
    	wend
    	  objoutFile.Close
     
    End Function

    Dis-moi si il y a encore une erreur
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #25
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Oui, il y a des erreurs:
    La liste Alealiste.m3u n'est pas générée.

    Le message de fin de traitement n'apparait pas.
    wscript.echo "terminer"
    J'ai une fenêtre d'erreur VBS.

    Nom : 2016-10-22_185756.png
Affichages : 265
Taille : 15,9 Ko

    Si tu arrive à résoudre cela, j'aurai une demande supplémentaire si cela ne t'ennuies pas.
    Dans mon BATCH, je récupère l'adresse de la bibliothèque musicale grâce à ce code qui va chercher directement dans le registre les informations:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    :main4
    cls
    color 02
    echo.
    echo           Recherche du dossier des musiques.
    set valeur=reg query  "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "My Music"
    set version=findstr /I /L /C:"REG_SZ"
    for /f "tokens=1,2,3,4" %%a in ('%valeur%^|%version%') do @echo Le dossier Musique  est dans : %%d & set lieu=%%d
    echo %lieu%> %temp%\piste.txt
    Ce qui me permet de connaitre l'emplacement de Ma Musique quelque soit son endroit sur n'importe quel disque de l'ordinateur. Je rappelle ensuite la valeur %lieu% pour enrichir la liste ICI.txt que tu connais déjà je crois..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    :main6
    cls
    FOR /F %%a IN (%temp%\piste.txt) DO SET lieu=%%a
     
    for /f %%i in (%temp%\cherche.ini) do (dir /a-d /b /o:gen /s "%lieu%\%%i" >>"%temp%\ICI.txt" 2>&1
    )
    Existe-t'il un equivalent en VBS pour récupérer la valeur du registre du dossier Ma Musique?

    Ce n'est pas une obligation, je pourrai tout aussi bien enrichir cette valeur du BATCH vers le VBS avant de le lancer...

    Merci beaucoup de ton aide Sachadee, encore une fois. C'est blasant que je ne puisse pas te renvoyer l’ascenseur, tu es plus doué que moi...

  6. #26
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    On va résoudre le premier problème d'abord :

    objStartFolder = "d:\music"

    as-tu mis le bon répertoire ?
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #27
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut ajout info
    Bonjour Sachadee,

    objStartFolder = "D:\Musique"
    Qui correspond bien à l'emplacement et au nom du dosssier musique.

    Je viens de regarder de plus près le script, je me pose une question:

    Au début du script est déclaré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim Myarr
    Myarr=array()
    Puis par la suite, je vois ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        For I = LBound(MyArray) To UBound(MyArray)
            J = CLng(((UBound(MyArray) - I) * Rnd) + I)
            If I <> J Then
                Temp = MyArray(I)
                MyArray(I) = MyArray(J)
                MyArray(J) = Temp
            End If
    		counta = 0
        Next
        counta=0
    	while counta <> Ubound(Myarray)+1
    		objoutFile.Write myarray(counta) & vbCrLf
    Il n'est plus question de Myarr mais Myarray, c'est normal?

  8. #28
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 157
    Points
    17 157
    Par défaut
    Salut LinTianFu et sachadee
    Citation Envoyé par LinTianFu
    ....
    Je viens de regarder de plus près le script, je me pose une question
    ....
    Dans ma signature il y a un lien que tu devrais utiliser, Où trouver l'aide en ligne pour VBScript ?, cela te permettrait d'avoir la/les réponse(s) plus rapidement.

    Le code proposé par sachadee fonctionne très bien chez moi.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  9. #29
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Merci @ProgElecT,

    d'avoir tester et ta version fonctionne également chez moi.

    Maintenant il est clair que je ne test pas sur 4000 fichiers.

    @LinTianFu pourrais-tu faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dir /b /s d:\music >test.txt
    et tu m'envoye ce fichier en MP.

    Pour que je puisse faire un test réel et voir où ça cloche.

    C'est difficile de débugger un code lorsqu'il fonctionne

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  10. #30
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Arff... Effectivement, si les codes fonctionnent correctement chez vous deux, je dois me poser des questions sur ma machine belliqueuse...

    Merci à tous les deux pour ce constat.

    @Sachadee : Je t'ai envoyé le contenu du DIR. Les points d'interrogation dans la liste sont des écritures chinoises, le Hic vient peut-être de cela?

  11. #31
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut,

    effectivement je pense que le problème est bien les caractères chinois (les ?? n'étant pas admis dans un nom de fichier)
    Il faudrait donc éliminer ces caractères physiquement avant la géneration de la liste aléatoire.

    Fait un test dans un dossier tu mets une centaine de fichier mp3 et tu selectionne tout et tu renommes en xxx et ensuite test le code sur ce répertoire.

    PS: j'ai pas reçu ton message
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  12. #32
    Membre à l'essai
    Homme Profil pro
    Testeur en application
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Testeur en application
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Points : 24
    Points
    24
    Par défaut
    Bon, bien voila, en effet, sans les caractères chinois tout se passe très bien. J'ai retiré deux dossiers qui en contenaient, c'est passé tout schuss, avec une messagebox m'indiquant "Terminé".

    Bravo pour les scripts, merci beaucoup pour le temps dédié à m'aider. Je ne comprenais pas pourquoi ça ne passait pas chez moi. Me voila rassuré.

  13. #33
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 177
    Points : 5 738
    Points
    5 738
    Par défaut
    Citation Envoyé par LinTianFu Voir le message
    Merci pour l'exe et le script.
    Le seul soucis c'est que je cherche un code pour les pc de monsieur tout le monde. Donc tout le monde n'a pas Autoit malheureusement. Sinon, c'était bien vue.
    Ceci est la solution la plus rapide et propre. Je parle d'Autoit, je n'ai pas regardé le code.
    L'exécutable compilé par Autoit embarque tout ce dont il a besoin, il est autonome.
    Après ça peut toujours être sympa d'apprendre le vbs...

  14. #34
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Dans ma signature il y a un lien que tu devrais utiliser, Où trouver l'aide en ligne pour VBScript ?, cela te permettrait d'avoir la/les réponse(s) plus rapidement
    Bonjour ProgElecT;
    Le lien de téléchargement cité n'est plus valide, Microsoft a supprimé le fichier de ses téléchargements.

    Il est possible de le télécharger à partir de la section téléchargements du site de feu JCB ou ICI
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Batch] Création d'une liste aléatoire en parcourant un fichier *.M3U
    Par LinTianFu dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 20/10/2016, 15h50
  2. Réponses: 5
    Dernier message: 13/10/2005, 11h19
  3. [generic] pb création d'une List []
    Par yoplaboom dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 14h01
  4. Création d'une liste ...
    Par keryss dans le forum Access
    Réponses: 6
    Dernier message: 21/10/2004, 10h00

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