Supprimer espaces, lettres dans nom fichier

Résolu
cocotehier -  
cchristian Messages postés 928 Statut Membre -
Bonjour,
Je recois des centaines de fichiers de visuels et les archives dans un répertoire, je voudrais corriger d'un coup tous les fichiers en faisant disparaitre les espaces, les lettres pour ne garder que des chiffres.
Auriez-vous un morceau de code VBA, un exemple DOS ?
Merci

--
Carpe Diem
Configuration: Windows XP
Internet Explorer 7.0

6 réponses

  1. cocotehier
     
    Up ?
    0
    1. cchristian Messages postés 928 Statut Membre 131
       
      Bonsoir,

      Peux-tu donner un exemple concret de ce que tu veux obtenir exactement ?
      0
  2. cocotehier
     
    Bonsoir, oui bien sur
    Je recois des fichiers .jpg qui devrait porter un nom comme par exemple xxxxxxxxxxxxx.jpg ou chaque x est un chiffre , en général il y 13 chiffres, et c'est ce que je veux obtenir in fine
    et je recois souvent des fichiers dont le nom est xxx xxx xxx xxx x.jpg ou encore xxxxxxxxxxxxxversion2.jpg
    Tout les fichiers sont dans un répertoire je cherche la moulinette qui enlévera les espaces, les lettres pour ne laisser que xxxxxxxxxxxxx.jpg
    Merci
    0
  3. cchristian Messages postés 928 Statut Membre 131
     
    Bon jour soir,

    Je viens de terminer ce petit boulot, j'en ai un peu bavé, mais ça semble coller. Fais, bien entndu, des tests de ton côté et tiens moi informé si possible.
    A la relecture de ton texte une petite chose m'inquiète dans l'exemple que tu m'as donné c'est :
    xxxxxxxxxxxxxversion2.jpg le 2 de version2 va être conservé est-ce souhaitable? Si non je ne vois pas très bien quoi faire.

        ECHO OFF
    
    SETLOCAL ENABLEdelayedExpansion
    SETLOCAL ENABLEextensions
            CLS
            CD C:\Documents and Settings\Christian\Mes documents\BATCH_files
    
        SET "param_1=C:\Documents and Settings\Christian\Mes documents\a1"
        SET "param_2=jpg"
    rem    SET "param_2=*"
    
        FOR             /R    "%param_1%"       %%F  IN  (*.%param_2%)        DO (
          SET                 "nom_fich=%%~nxF"
          SET                 "save_ext=%%~xF"
          SET                 "new_name="
          FOR           /L    %%I                   IN  (0,1,32)         DO  (
            FOR         /L    %%J                   IN  (0,1,9)        DO  (
               IF      "!nom_fich:~%%I,1!"  ==    "%%J"              (
                  SET         "new_name=!new_name!!nom_fich:~%%I,1!" )     )  )
               IF NOT  "!new_name!"         == ""             (
                  SET         "new_name=!new_name!!save_ext!"
                  REN "%%F" !new_name!
                  ECHO renommer ici !nom_fich! en !new_name!   )                 )
    
            GOTO                                            :EOF
    0
  4. cocotehier
     
    Bonjour,
    Trés sympa, je test Lundi, et te tiens au courant.
    Pour le 2 de version 2 effectivement...mais s'il ne reste que cela je gérerai
    Merci beaucoup
    Bon Week !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cchristian Messages postés 928 Statut Membre 131
     
    Bonjour,

    Une petite modif qui a malgré tout son importance car elle évite un RENAME systématique des fichiers, ce qui n'était pas très élégant.

            ECHO OFF
    SETLOCAL ENABLEdelayedExpansion
    SETLOCAL ENABLEextensions
            CLS
            CD C:\Documents and Settings\Christian\Mes documents\BATCH_files
    
    rem Le chemin/dossier sous lequel se trouvent les fichiers à traiter.
        SET "param_1=C:\Documents and Settings\Christian\Mes documents\a1"
        SET "param_2=jpg"
    rem    SET "param_2=*"
    
        FOR             /R    "%param_1%"       %%F  IN  (*.%param_2%)        DO (
          SET                 "nom_fich=%%~nxF"
          SET                 "save_ext=%%~xF"
    rem Ajout de la variable save_nom (nom du fichier avant modif éventuelle)
          SET                 "save_nom=%%~nF"
          SET                 "new_name="
          FOR           /L    %%I                   IN  (0,1,32)         DO  (
            FOR         /L    %%J                   IN  (0,1,9)        DO  (
               IF      "!nom_fich:~%%I,1!"  ==    "%%J"              (
                  SET         "new_name=!new_name!!nom_fich:~%%I,1!" )     )  )
            IF NOT     "!new_name!"         == ""              (
    rem        Ajout de ce test afin d'éviter un REName systématique.
               IF NOT  "!new_name!"         == "!save_nom!"  (
                  SET         "new_name=!new_name!!save_ext!"
                  REN         "%%F"     !new_name!
                  ECHO renommer ici !nom_fich! en !new_name! )  )               )
                                                                                  
        GOTO                                            :EOF
    0
    1. cocotehier
       
      Christian,
      Rô le boulet que je suis, j'ai voulu tester en copiant ceci dans un.cmd mais je n'y suis parvenu, du coup, j'ai mis un grand coup de "Ant R....r"
      0
      1. cchristian Messages postés 928 Statut Membre 131 > cocotehier
         
        Bonsoir,

        j'ai mis un grand coup de "Ant R....r"

        Explique moi mieux, je ne comprends pas. C'est quoi la cata ?

        0
      2. cocotehier > cchristian Messages postés 928 Statut Membre
         
        Bonsoir,
        C'est moi la cata : dans mon répertoire (2163 images) tous les cas se produisent ; version2 ; -1 ; /1 ; B ; chaine de caractéres....
        Le grand coup de c'est que j'ai utilisé Ant Renamer !
        C'est un petit logiciel qui permet entre autre de supprimer les espaces, les chaines de caractères...
        Il y a en fait un petit détails, dés que l'on supprime les espaces ou les lettres d'un nom de fichier pour le renommer, ce nouveau nom ne peut pas être un nom existant déjà dans le répertoire, et cela impose....de faire des suppressions..
        Merci encore une fois.
        0
      3. cchristian Messages postés 928 Statut Membre 131 > cocotehier
         
        Bonsoir,

        OK, merci, bonne continuation. Si tu as besoin n'hésite pas.
        0