Partage
  • Partager sur Facebook
  • Partager sur Twitter

DOS - batch modification nom de fichiers via liste

en DOS (.bat) exclusivement

Sujet résolu
    23 février 2021 à 23:42:10

    Bonjour,

    Je souhaite modifier en boucle le nom de plusieurs fichiers.

    Je veux le faire en DOS (.bat) --> je connais tous les logiciels de renommage... Je veux le faire en batch (DOS), et non avec un logiciel, ni en VBA, ni autrement.

    le nom d'origine des fichiers : 01.pdf, 02.pdf, 03.pdf, 100.pdf... sur 2 ou 3 caractères (maxi 3)

    Le nouveau nom : 0001017.pdf, 00010338.pdf, 0001059.pdf... toujours sur 7 caractères

    La correspondance entre l'ancien nom et le nouveau sont dans un fichier txt (RENB.txt), séparés par ; (point-virgule), et sans en-tête :

    01;0001017

    02;0001033

    03;0001059

    04;0001067

    100;1234567

    Tous les fichiers (pdf et liste de correspondance) sont dans le même répertoire C:\TEST\

    Mon "programme" :

    @echo on

    for /F "delims=. tokens=1" %%i in ('dir /B *.pdf') do (

    for /F "delims=; tokens=2" %%k in ('FIND "%%i" RENB.txt') do (

    ren "%%i" "%%k"

    )

    )

    pause

    eh... bin... ça ne marche pas et ça fait 3 heures que je tourne en rond sur internet :colere:

    Si on remplace REN par ECHO, les résultats sont pourtant OK :

    C:\TEST>(echo "01" "0001067" )

    "01" "0001067"

    C:\TEST>(for /F "delims=; tokens=2" %k in ('FINDSTR "02" RENB.txt') do (echo "02" "%k" ) )

    C:\TEST>(echo "02" "0001033" )

    "02" "0001033"

    C:\TEST>(for /F "delims=; tokens=2" %k in ('FINDSTR "03" RENB.txt') do (echo "03" "%k" ) )

    C:\TEST>(echo "03" "0001033" )

    "03" "0001033"

    C:\TEST>(echo "03" "0001059" )

    "03" "0001059"

    C:\TEST>(for /F "delims=; tokens=2" %k in ('FINDSTR "04" RENB.txt') do (echo "04" "%k" ) )

    C:\TEST>(echo "04" "0001067" )

    "04" "0001067"

    C:\TEST>pause

    Appuyez sur une touche pour continuer...

    Et j'ai essayé les 2 FOR séparément, et le second me semble poser pb mais je ne sais pas lequel... (ça ouvre le fichier de correspondance RENB.txt et rien de plus)

    J'ai aussi remplacé FIND par FINSTR. Aucun changement.

    J'aimerai conserver cette syntaxe, corrigée par une âme charitable, sauf s'il y a impossibilité/incompatibilité technique, auquel cas une alternative (en DOS bien-sûr :)) serait la bienvenue.

    Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      24 février 2021 à 0:21:29

      Bonsoir,

      Dans ta ligne ' ren "%%i" "%%k" ' est tu sûr que %%i et %%k contienne bien l'extension .pdf ?

      • Partager sur Facebook
      • Partager sur Twitter
        24 février 2021 à 14:42:37

        Bonjour Zaibai

        Merci pour ta réponse.

        Dans le 1er FOR j’indique qu’on ne traite que ce qu’il y a avant le point, et dans la correspondance on ne prend que le nouveau nom sans extension donc sur le REN on ne s’occupe pas de l’extension, non ? Elle ne devrait normalement pas changer ?

        j´avais d’ailleurs déjà essayé REN %%i.pdf %%k.pdf et ça ne marchait pas il me semble... je vais réessayer :-)

        -
        Edité par RazMockt 24 février 2021 à 14:45:58

        • Partager sur Facebook
        • Partager sur Twitter
          24 février 2021 à 15:36:54

          en rajoutant les .pdf, ça devrait marcher, mais peut y avoir un souci: la commande FIND "%%i" RENB.txt peut retourner plusieurs lignes (si %%i vaut 01, il va te retourner les 4 premières lignes de ton exemple.

          En faisant la recherche FIND "%%i;" RENB.txt, ça ne te renverra qu'une seule ligne (par rapport à ton exemple) (on limite les résultats en tout cas)

          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2021 à 20:56:16

            Merci Umfred.

            Je vais réessayer comme ça !

            • Partager sur Facebook
            • Partager sur Twitter
              28 février 2021 à 16:10:17

              Bon, j'ai réessayé en indiquant les extension ren "%%i".pdf "%%k".pdf et ça marche tout simplement...

              Même pas eu besoin de rajouter le ; dans FIND... qui a cependant aussi fonctionné pour avoir testé.

              Pb résolu.

              Merci à tous et à plus tard pour d'autres questions :ange:

              • Partager sur Facebook
              • Partager sur Twitter

              DOS - batch modification nom de fichiers via liste

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown