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 :

Comment Renommer / tronquer le nom de fichier - traitement de masse [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut Comment Renommer / tronquer le nom de fichier - traitement de masse
    Bonjour,

    Tout d'abord, je suis nouveau sur ce forum donc je m'excuse si ma demande parait redondante. Cependant, j'ai cherché et je n'ai pas trouvé de réponses sur différents sujets du forum.
    Je précise aussi que je suis ingénieur mécanicien donc vraiment novice sur les lignes de commande.
    Mon besoin est de pouvoir renommer en masse des fichiers qui sont en .pdf ou .dxf ou .dwg (les 2 derniers étant des fichiers de DAO). Je m'explique, nous avons une base de données dans laquelle on peut rentrer en masse ces fichiers mais il faut que l'intitulé soit bon.
    Les plans sont nommés de la manière suivante :

    Exemple : J49XXXXX0A
    J : unité de production
    49 : Racine du service (Ici : service méthodes)
    XXXXX : Racine du plan numéro de (00000 à 99999)
    0 : Indice de modification ayant une incidence sur le stock ou sur le fonctionnel de l’ensemble.
    A : Indice n’ayant pas d’influence sur le stock ou sur le fonctionnel machine.

    Donc les plans que je dois avoir sont J49100000A.dxf / J491234560A.dxf / J499876541B.dxf / ETC.

    Cependant, je dois retraiter le passé... et j'ai des plans qui sont nommés comme : J 49 1235 45 0 C.dxf ou J.49.1235.45.0.C.dxf ou J-49-1235-48-C Support platine.dxf

    j'ai quelques 5000 plans à traiter... je voudrais réaliser un batch pour renommer ces fichiers
    J-49-1235-48-C Support platine.dxf =>>> J49123548C.dxf

    Donc il faut supprimer tous les espaces, les -, les _, les . (sauf extension), ensuite garder que les 10 premiers caractères et supprimer le reste (qui peut être variable).
    Aujourd'hui j'ai réussi à supprimer espace, ., -, _ mais je ne sais pas comment tronquer en gardant que les 10 premiers caractères + extension. Je pensais à une substitution mais vu que la longueur à supprimer varie... je coince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "O:\DATACAO\RDMTH\CONVERSION FICHIERS PLANS\Fichiers dxf a convertir" %%a in (*.dxf) do (
      set "path=%%~nxa"
      set "path=!path: =!"
      set "path=!path:_=!"
      set "path=!path:-=!"
      set "path=!path:dxf=!
      set "path=!path:.=!^.dxf"
      move /y "%%~a" "%%~dpa!path!"
    )
    pause
    Merci à ceux qui ont des idées et qui peuvent se pencher sur le sujet pour me décoincer.

  2. #2
    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,

    essaye cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    setlocal enabledelayedexpansion
     
    for /r "O:\DATACAO\RDMTH\CONVERSION FICHIERS PLANS\Fichiers dxf a convertir" %%a in (*.dxf) do (
      set "path=%%~na"
      set "path=!path: =!"
      set "path=!path:_=!"
      set "path=!path:-=!"
      set "path=!path:.=!"
      set "path=!path:~0,10!"
      echo move /y "%%~a" "%%~dpa!path!%%xa"
    )
    pause
    j'ai mis un echo devant le move pour que tu puisses tester la sortie !

    Si la sortie est OK enlève le !


  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    Bonjour sachadee et merci de ton retour.

    Pour bien comprendre, que veut dire %%~na et %%xa ???


    Alors j'ai lancé ton script sans succès mais je me suis rebasé sur lui pour donné ceci :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    @echo off
    setlocal enabledelayedexpansion
     GOTO:REM
    ==========================================
    ::n’affiche pas le programme qui s’exécute et le arobass cache le echo aussi
    ::pour gagner en rapidité en compilation,  la modification du contenu d'une variable à retardement dans une boucle a un effet.
    ==========================================
    :REM
    
    for /r "O:\DATACAO\RDMTH\CONVERSION FICHIERS PLANS\Fichiers dwg a convertir" %%a in (*.dwg) do (
      set "nom=%%~nxa"
      set "nom=!nom:_=!"
      set "nom=!nom:-=!"
      set "nom=!nom: =!"
      set "nom=J!nom!"
      set "nom=!nom:JJ=J!"
      set "nom=!nom:dwg=!
      set "nom=!nom:.=!"
      set "nom=!nom:~0,10!"
      set "nom=!nom!.dwg"
    
      move /y "%%~a" "%%~dpa!nom!"
    )
    GOTO:REM
    ==========================================
    
    ::cherche dans ce dossier et les sous dossiers les fichiers qu'on met dans une variable a en .dwg et fait l’action 
    ::création d'une référence qui prend le nom des fichiers (nxa) de la variable a
    ::la référence prend le nom précédent et remplace les _ par rien
    ::la référence prend le nom précédent et remplace les - par rien
    ::la référence prend le nom précédent et remplace les espaces par rien
    ::la référence prend le nom précédent et ajoute J devant
    ::la référence prend le nom précédent et remplace JJ par J s'il y a lieu
    ::la référence prend le nom précédent et remplace dwg par rien
    ::la référence prend le nom précédent et remplace les . par rien
    ::la référence prend le nom précédent et garde que les 10 premiers caractères (JXXXXXXXXXA)
    ::la référence prend le nom précédent et ajoute à la fin .dwg
    ::on met les fichiers sous variable a dans le dossier de départ en écrasant les anciens a
    
    ==========================================
    :REM
    
    pause

  4. #4
    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 la meilleur réponse se trouve dans for /?


    %%~fa chemin complet du fichier
    %%~da => unité (drive) du fichier (c:, d:,..)
    %%~pa => uniquement le chemin du fichier
    %%~na => uniquement nom du fichier
    %%~xa => uniquement l' extension du fichier
    %%~ta => date/heure du fichier
    %%~za => taille du fichier


  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur mécanique
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    OK, super merci en tout cas de ton aide ! Cela marche et j'ai pu commencer à faire appliquer ce script !

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

Discussions similaires

  1. [Batch] Tronquer un nom de fichier
    Par aerane dans le forum Scripts/Batch
    Réponses: 20
    Dernier message: 21/05/2013, 08h22
  2. [XL-2010] Macro pour renommer des fichiers à partir d'une liste de nom de fichiers
    Par thomahh dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/01/2013, 17h03
  3. déclencher traitement pour afficher noms de fichiers en temps réel
    Par Sephiroth66 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/08/2011, 17h09
  4. Réponses: 1
    Dernier message: 02/12/2009, 18h04
  5. renommer le nom de fichier avec un script
    Par Abdellah.alaoui2006 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 25/01/2009, 15h50

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