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

Windows Discussion :

[Batch] Remplacement de strings dans des noms de fichier


Sujet :

Windows

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 32
    Points
    32
    Par défaut [Batch] Remplacement de strings dans des noms de fichier
    Bonjour, j'aurai besoin d'un peu d'aide pour un script batch. je veux, que dans le dossier où se trouve mon script, tous occurences d'une chaine particulière soit remplacée par une autre chaîne dans les noms de fichier:
    ex :
    fichier123toto456.bmp --> fichier toto.bmp
    fichier123milou456.bmp --> fichier milou.bmp

    (dans ce cas, la chaîne 123 est remplacée par un espace, et la chaine 456 est remplacée par une chaîne vide).
    J'ai déjà regardé la boucle for pour ce qui est du parcours des fichiers, mais j'avoue que je n'ai pas forcément bien saisi.


    Merci de votre aide

  2. #2
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Voila ton script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for /r "%~dp0\" %%i in (*.*) do set VrChm=%%i& set VrFch=%%~nxi& call :suite
    
    :suite
    set VrFch=%VrFch:123= %
    set VrFch=%VrFch:456=%
    
    ren "%VrChm%" "%VrFch%"

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Merci Kokotis.
    J'ai essayé d'adapté le script pour mes besoins, mais ça ne marche pas tout à fait comme prévu... regardez mon jeu d'essai :
    le script adapté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for /r "%~dp0\" %%i in (*.*) do set VrChm=%%i& set VrFch=%%~nxi& call :suite
    
    :suite
    set VrFch=%VrFch:%20= %
    set VrFch=%VrFch:[1]=%
    
    ren "%VrChm%" "%VrFch%"
    RESULTATS :

    avant :


    après :

  4. #4
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Avec cette methode tu ne peut pas remplacer le caractére %, et pou [] j ne sais pas, je vai essayer autrement

  5. #5
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Ah je n'ai pas d'autre idée, mais ca marche pour [1], mais pas pour %

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    ok merci c'est déjà bien . J'avoue que pour moi, ce script est on ne peut plus flou ^^. j'ai juste repéré les chînes à remplacer.

    Il n'y a donc plus que ce problème de '%'... Est-ce que quelqun d'autre à un idée ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Peut être en comparant les caractères un par un à '%' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set n=le%20chien
    if %n:~2,1% == % (echo oui) else echo non
    peut être en utilisant ça dans une boucle for.

  8. #8
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Citation Envoyé par blackaagony
    Peut être en comparant les caractères un par un à '%' :
    Et y supprime les % ton code ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par koKoTis
    Et y supprime les % ton code ?
    tu parles de celui de balckaagony non ?

    j'avoue qu'avec ton code blackaagony, je ne vois pas comment supprimmer mon caractère '%' de ma chaîne...

  10. #10
    Débutant  
    Avatar de koKoTis
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 438
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 438
    Points : 2 415
    Points
    2 415
    Par défaut
    Citation Envoyé par blepeign
    tu parles de celui de balckaagony non ?
    Tout a fait

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    mon code c'est juste pour localiser '%'. ensuite tu concatenes la sous chaine pré '%' avec la chaine post '%'...

    Je pensais faire comme ça :
    localisation du caractère à virer. Stockage de sa position dans une variable :

    puis concaténation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set conc=%variable:~,%n%-1%%variable:~%n%+1%
    Mais en effet ça ne marche pas, on ne peut pas emboiter des '%' de variable... Il faudrait faire ça en C par exemple...

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Quelqun a une inspiration SVP ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 2.X] Remplacer les accents dans plusieurs noms de fichiers
    Par lyko94 dans le forum Général Python
    Réponses: 13
    Dernier message: 04/07/2014, 09h58
  2. [Solaris][KSH] awk : Remplacer un motif dans des noms de fichiers par un autre motif
    Par keketteboy dans le forum Shell et commandes POSIX
    Réponses: 0
    Dernier message: 12/10/2012, 15h23
  3. Réponses: 2
    Dernier message: 26/01/2012, 15h43
  4. Réponses: 4
    Dernier message: 29/03/2011, 17h13
  5. [Batch] remplacer une string dans un fichier
    Par yelbied dans le forum Windows
    Réponses: 5
    Dernier message: 12/07/2007, 10h36

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