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 :

Remplacer caractères d'un fichier texte.


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Remplacer caractères d'un fichier texte.
    Bonjour !

    Alors je cherche à faire un script qui me permet de rechercher dans chaque fichier texte (playlist .m3u en fait...), contenu dans le dossier où j'exécute le script, le mot '\MUSIC\" et de le remplacer par "MUSIC\". C'est Le premier "\" qui m'embête et que je veux supprimer.

    Exemple :

    #EXTM3U
    \MUSIC\Maxime Dangles\MUSIC 2009\Strawberry.mp3
    \MUSIC\Richard Wagner\Classique\La Chevauchée des Walkyries.mp3
    Doit devenir :

    #EXTM3U
    MUSIC\Maxime Dangles\MUSIC 2009\Strawberry.mp3
    MUSIC\Richard Wagner\Classique\La Chevauchée des Walkyries.mp3
    Donc le premier "\" doit disparaître.

    J'ai essayer ça mais c'est pas concluant...

    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
    Dim oFSO,oFl
    Dim chemin
    Dim AN
    Dim UTF
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const ModeAscii = 0, ModeUnicode = -1
    Dim texte
     
    chemin = "I:\"
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    If oFSO.FolderExists(chemin) Then
     For each oFl in  oFSO.GetFolder(chemin).Files
      if Right(oFl.Name,3)="m3u" Then
     
       Replace("\MUSIC\","\MUSIC\","MUSIC\")
     
     
      End If
     Next
    End If
     
    Wscript.echo "Finish !"

    Merci pour votre aide !

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    salut,

    ta ligne "Replace..." est erronée ... la fonction replace permet de remplacer une suite de caractére par une autre dans une chaine .

    tu dois donc tout d'abords :

    1. Lire le fichier à traiter : Comment lire le contenu d'un fichier texte ?
    2. Utiliser la fonction replace pour effectuer les modification dans la variable chaine voir un exemple d'utilisation de replace :Comment interpréter une chaîne string ?
    3. Écrire la chaîne modifié dans le fichier initial : Comment écrire dans un fichier texte ?


    Avant cela tu peu tester ta boucle, voir si elle parcours bien tous les fichiers à modifier : en modifiant ta ligne replace :

    Tu peu aussi créer une fonction qui prends en paramètre le nom du fichier à traiter et effectue le remplacement, ainsi avant de lancer ton script sur tous tes fichiers tu pourra tester ta modification sur un seul fichier :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub Traitefichier ( stFichier )
     'Rajouter ici la lecture du fichier dont le nom est mémorisé par la variable stFichier , et stocke le résultat dans une variable (stContenu par exemple)
    ' ici le replace... 
    stContenu = replace(stContenu ,"\MUSIC\","MUSIC\")
    )
    'Rajoute ici l'écriture de stContenu dans le fichier existant.
     
    end sub
    tu pourra donc tester ta procédure par une ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    traitefichier "MonFichier.mu3"
    puis si OK placer cela dans ta boucle


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Merci pour ta réponse mais en fait mon script je le comprend pas moi même, c'est des copier coller de code que j'ai pris sur le site en les assemblant sauvagement en espérant que ça marche. Désolé mais c'est vraiment pas accessible pour un débutant.

    J'ai bien lu la FAQ mais j'y comprend rien...

    Dim stRep 'Nom du répertoire à parcourir
    Dim oFSO,oFl
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\Tmp"
    If oFSO.FolderExists(stRep) Then
    For each oFl in oFSO.GetFolder(stRep).Files
    Wscript.Echo oFl.Name
    Next
    End If
    C'est quoi oFl ? et .Name..?

    Pfff, j'me prend la tête depuis ce matin juste pour enlever un p***** de caractère automatiquement en début de ligne. Ça doit pourtant pas être bien compliqué !!!

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Fiouuuu ! J'ai réussi !!!


    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
    Const ForReading = 1, ForWriting = 2 
    Dim oFSO,oFl 'Cherche pas c'est comme ça...
    Dim f 'file
    Dim playlist 'variable temporaire qui va recevoir le contenu du m3u
    Dim chemin 'chemin à mettre pour qu'il prenne tous les fichier du dossier à GetFolder
    Dim CONVERTER
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
     
    CONVERTER = "CONVERTER.VBS"                             'Pour que le chemin ne pose pas de problème. La lettre du lecteur ne fera plus chier !!
    Set CONVERTER = oFSO.GetFile(CONVERTER)
    chemin = CONVERTER.ParentFolder
     
    For each oFl in oFSO.GetFolder(chemin).Files
    	if Right(oFl.Name,3)="m3u" Then
    		Set f = oFso.OpenTextFile(oFl.Name, ForReading)
    		while Not f.AtEndOfStream 
    		playlist = f.ReadAll
    		wend
    		playlist = Replace (playlist, "\Music\", "Music\")
    		Set f = oFso.OpenTextFile(oFl.Name, ForWriting)
    		f.write playlist
    	End if
    Next

Discussions similaires

  1. Remplacer caractères d'un fichier texte
    Par dada4444 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/06/2009, 17h18
  2. Remplacer un caractère dans un fichier texte
    Par steelk dans le forum Excel
    Réponses: 36
    Dernier message: 29/01/2008, 16h10
  3. Remplacer une chaine de caractère dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/01/2008, 12h16
  4. Réponses: 3
    Dernier message: 27/06/2005, 17h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 15h26

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