Renommer des fichiers en dos

fjoyal -  
Pierrot6150 Messages postés 3186 Statut Membre -
Bonjour,

J'ai plusieurs fichiers (une centaine) dans un répertoire. Ces fichiers se nomment P7230_654000_234000.txt, P7230_655000_234000.txt, etc...

Comment renommer en dos ces fichiers pour enlever les zéros et obtenir P7230_654_234.txt et P7230_655_234.txt?

Merci
Francois

4 réponses

  1. le druide Messages postés 40644 Date d'inscription   Statut Contributeur Dernière intervention   6 616
     
    salut,

    avec la commande ren.

    C:\Users\pc>help ren
    Renomme un ou plusieurs fichiers.

    RENAME [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.
    REN [lecteur:][chemin]nom_de_fichier1 nom_de_fichier2.

    Vous ne pouvez pas spécifier un nouveau lecteur pour votre destination.
    0
  2. ginto5 Messages postés 8747 Date d'inscription   Statut Membre Dernière intervention   683
     
    Voir le programme gratuit "RENOMMER".
    0
  3. fjoyal
     
    Oui merci je connais bien ren mais comment le faire en batch. N'oublions pas que j'ai des centaines de fichiers. Je ne comprends pas parfaitement la fonction FOR %%
    0
  4. Pierrot6150 Messages postés 3186 Statut Membre 561
     
    Si comme tu dis, c'est toujours sous la même forme

    P7230_123000_123000.txt

    Ne garder que P7230_654 et 234 et reconstruire le nouveau nom P7230_654_234.txt
    Enregsitrer dans un batch
    Une fois la liste terminer, exécuter le batch pour renommer.

    Si c'est bien cela ?

    Ouvrir le bloc-botes de Windows
    Enregistrer ce programme (avec extension .BAT)
    Sauvegarder dans le dossier que tu veux renommer
    Exécuter ce dernier.

    @echo off
    setlocal EnableDelayedExpansion

    set _Path=%CD%
    rem Création du fichier contenant les nouveau nom
    echo. ^@ECHO OFF >"%_Path%\Renommer_Fichiers.bat"

    rem Lire les noms
    cls
    echo. Listing, en cours...
    FOR /R "%_Path%" %%I IN (*.txt) DO set _Fichier=%%~nI && call :_Manipuler
    echo. Terminer.
    echo.
    echo. ^EXIT >>"%_Path%\Renommer_Fichiers.bat"

    rem Exécuter le batch contenant les nouveau nom
    echo. Renommer les fichiers, en cours...
    start /B /Wait cmd.exe /K "%_Path%\Renommer_Fichiers.bat"
    echo. Terminer.

    Rem Fin du programme
    echo.
    echo. Fermeture en cours...
    ping 127.0.0.1 -n 6 >nul
    del "%_Path%\Renommer_Fichiers.bat" >nul
    exit

    :_Manipuler
    set _Debut=%_Fichier:~0,9%
    set _Fin=%_Fichier:~13,3%

    set _Ancien=%_Fichier:~0,-1%
    set _Nouveau=%_Debut:~0,-1%_%_Fin:~0,-1%

    rem Enregistrer nouveau noms
    echo. ^IF ^NOT ^EXIST "%_Path%\%_Nouveau%.txt" ^RENAME "%_Path%\%_Ancien%.txt" "%_Nouveau%.txt" >>"%_Path%\Renommer_Fichiers.bat"
    goto :EOF
    0