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

Scripts/Batch Discussion :

Remplacer nom chaine de caractère dans nom de fichier [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut Remplacer nom chaine de caractère dans nom de fichier
    Bonjour,
    Je souhaite remplacer le nom de plusieurs fichiers contenant une certaine chaine de caractère dans un chemin UNC batch.
    Ex:
    Dans \\Dossier1\Dossier2\
    Fichiertest1.pdf
    Fichiertest2.pdf
    Fichiertest3.pdf

    Deviendrait dans le même chemin
    Fichierprod1.pdf
    Fichierprod2.pdf
    Fichierprod3.pdf

    Quel serait la meilleure solution pour réaliser cette manipulation svp? (monter un lecteur, se placer dedans, rechercher la chaine)
    D'avance merci pour votre aide

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut
    Bonjour,

    Je ne sais pas si j'ai été clair mais il faut juste changer le nom de plusieurs fichiers dans un dossier grâce à une boucle.
    Pourriez-vous m'aider svp?

    Et si ce n'est pas possible en batch, est-ce que ce serait possible avec PowerShell svp?

  3. #3
    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
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    
    setlocal enabledelayedexpansion
    
    for %%a in (*.pdf) do (
        set "$fichier=%%a"
        echo !$fichier:test=prod!
    )

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 218
    Par défaut
    Et bien, si tu souhaites de vrai réponse merci de détaillé ton besoin :
    -Quelles sont les fichiers qui doivent être analysés ? *.* *.pdf fichier*.pdf ... ?
    -L'analyse doit elle être récursive ?
    -Est ce la même chaîne de caractère qui doit être trouvé dans les fichiers ?
    -Quelle sont les critères de renomage ?
    -Que faire si le nom de fichier cible existe déjà ? Annuler, écraser... ? Continuer ou stopper le script ?
    ...

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 233
    Par défaut
    Bonjour,

    Mes excuses pour la réponse tardive.
    C'est exactement ce que je veux sauf qu'il faut vraiment que le script renomme les fichiers svp.
    Là ils apparaissent bien si je rajoute une pause à la fin du script.
    Faut-il utiliser la commande mv dans la boucle? et si oui comment svp?

    Pour la règle de nommage, en gros c'est aaaXXXy.pdf qui doit devenir aaaZZZy.pdf, en gros une chaine précise dans le nom du fichier qui en remplace une autre.
    La chaine à remplacer peut être en début, milieu ou fin du nom du fichier.
    Oui je pense que dans ce cas là on peut parler de récursivité si on utilise le renommage dans la boucle.
    Si le fichier visé existe déjà il faut annuler svp.

    Merci pour votre aide

  6. #6
    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
    Par défaut
    Test ça si la sortie est OK tu peux enlever le echo avant le ren :


    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @echo off
     
    setlocal enabledelayedexpansion
     
    set "$search=test"
    set "$replace=prod"
     
    for %%a in (*.pdf) do (
        set "$fichier=%%a"
        set "$fichier=!$fichier:%$search%=%$replace%!"
        if not exist "!$fichier!" echo ren "%%a" "!$fichier!"
    )


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

Discussions similaires

  1. Rechercher/remplacer une chaine de caractères dans plusieurs fichiers
    Par _shuriken_ dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/07/2011, 20h06
  2. Remplacement de chaine de caractères dans un fichier
    Par koKoTis dans le forum Langage
    Réponses: 4
    Dernier message: 13/09/2008, 18h36
  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, 11h16
  4. Réponses: 14
    Dernier message: 15/06/2007, 13h59
  5. Réponses: 4
    Dernier message: 18/07/2006, 16h31

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