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 :

renommer un groupe de fichiers


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Par défaut renommer un groupe de fichiers
    Bonjour,

    Je chercher à renommer un groupe de fichier en supprimant des caractères dans les noms déjà présents.
    Exemples
    Mes fichiers ont tous un nom comme cela :
    TOB1_mat2__2017_02_02_1142_2017_02_02_1200.DAT

    TOB1_mat2__2017_02_02_1142_2017_02_02_1230.DAT


    Et moi je voudrai obtenir le non suivant

    mat2_2017_02_02_1230.dat

    Supprimer donc les caracteres avant mat2__ et les 16 caractères après mat2__ et récupérer les derniers en clair

    suppression/TOB1_/fin_suppressionmat2__suppression/2017_02_02_1142_/fin_suppression2017_02_02_1230.DAT

    Merci pour votre aide
    Fred

  2. #2
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Si TOB1_ est bien une constante :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $file="TOB1_mat2__2017_02_02_1142_2017_02_02_1200.DAT"
    $file2 = ($file -split "TOB1_")[1]
    $file3=$file2.Remove(5,16)
    $file3

  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
    En BAT


    ::Méthode I

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    setlocal enabledelayedexpansion
    
    for /f "delims=" %%a in ('dir /b /-d *.dat') do (
    	set "$file=%%a"
    	echo ren "!$file!" "!$file:~5,5!!$file:~-19!"
    )

    ::Méthode II

    Plus robuste (indépendant du nombre de lettre entre chaque _)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    setlocal enabledelayedexpansion
    
    for /f "tokens=2,7,* delims=_" %%a in ('dir /b /-d *.dat') do (
    	echo ren "!$file!" "%%a_%%b_%%c"
    )

    Tu peux tester les 2 codes. Si la sortie te convient enlève le ECHO devant le REN


  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
    Une autres proposition PowerShell.

    Je change aussi en minuscule puisque tu l'as noté comme ceci dans ton exemple.
    Tu as aussi le "__" qui devient "_".

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ChildItem "*_mat2__*.DAT" | Rename-Item -NewName {$_.name.Substring(5).Remove(5, 16).Replace("__", "_").ToLower()}

  5. #5
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Par défaut
    Merci bcp cela fonctionne super !

    La maîtrise de ce type de syntaxe m'impressionne toujours beaucoup !!!





    Citation Envoyé par sachadee Voir le message
    En BAT


    ::Méthode I

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    setlocal enabledelayedexpansion
    
    for /f "delims=" %%a in ('dir /b /-d *.dat') do (
    	set "$file=%%a"
    	echo ren "!$file!" "!$file:~5,5!!$file:~-19!"
    )

    ::Méthode II

    Plus robuste (indépendant du nombre de lettre entre chaque _)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    @echo off
    setlocal enabledelayedexpansion
    
    for /f "tokens=2,7,* delims=_" %%a in ('dir /b /-d *.dat') do (
    	echo ren "!$file!" "%%a_%%b_%%c"
    )

    Tu peux tester les 2 codes. Si la sortie te convient enlève le ECHO devant le REN


  6. #6
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Août 2014
    Messages : 10
    Par défaut
    Bonjour à tous,

    Pas de problème pour exécuter dans un répertoire local sous C:\.
    Par contre pour l’exécuter dans un répertoire d'un disque virtuel il me renvoie toujours "fichier introuvable".
    Pouvez vous me dire pourquoi ?
    Ci-dessous je que j'ai tapé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    setlocal enabledelayedexpansion
    
    for /f "delims=" %%a in ('dir x: \\193.50.17.234\dataicos_traitees\fichier_decouper\decoupe_30mn /b /-d *.dat') do (
    	set "$file=%%a"
    	 ren "!$file!" "!$file:~5,6!!$file:~-19!"
    )
    merci pour votre aide

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

Discussions similaires

  1. [Batch] Renommer un groupe de fichier (script de transfert de photo)
    Par neo18045 dans le forum Scripts/Batch
    Réponses: 17
    Dernier message: 23/10/2009, 18h17
  2. [Système] Suppression d'un groupe de fichier
    Par ebola dans le forum Langage
    Réponses: 1
    Dernier message: 25/11/2007, 10h12
  3. renommer une liste de fichiers
    Par joenco dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 22/09/2007, 15h44
  4. Renommer ou Déplacer, Supprimer fichier
    Par Loopinge71 dans le forum MFC
    Réponses: 1
    Dernier message: 13/06/2007, 18h27
  5. Taille d'un groupe de fichiers
    Par Mark53 dans le forum Windows XP
    Réponses: 2
    Dernier message: 15/10/2006, 23h05

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