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 :

Renommage d'une partie du nom d'un fichier à nb de caractères variable


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Renommage d'une partie du nom d'un fichier à nb de caractères variable
    Bonjour,

    je ne vous cache pas que je suis débutant en batch mais après avoir lu différents faq, forums et sites je n'ai pas trouvé de solution à ma question qui me paraissait pourtant assez simple :

    Renommer différents fichiers d'un répertoire qui sont du type xxxxxx_A.xls en xxxxxx_D.xls

    le xxxxxx pouvant avoir plus/moins de caractères il s'agit en générale d'une région française dans mon cas.

    Toutes les techniques à base de REN que j'ai pu essayer ne réalisant pas l'opération désirée.

    Je vous remercie par avance de votre.

    Cordialement,

    joffrey.

  2. #2
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Salut,

    voici une solution :

    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
    
    set rep=D:\test\plop
    For %%a in (%rep%\*) do (
    	set fic=%%~nxa
    	for /f "tokens=1,2 delims=_" %%n in ('echo !fic!') do (
    		set part1_fic=%%n
    		set part2_fic=%%o
    		set new_fic=!part1_fic!_D!part2_fic:~1,50!
    		rename "%rep%\!fic!" !new_fic!
    	)
    )

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Prenez si possible l'habitude, en tant que débutants, de ne mettre qu'une seule instruction par ligne quand c'est possible...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Echo off
    Setlocal enabledelayedexpansion
    C'est plus lisible, notamment par quelqu'un qui débute.

  4. #4
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Citation Envoyé par NorocBzh Voir le message
    Salut,

    voici une solution :

    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
    
    set rep=D:\test\plop
    For %%a in (%rep%\*_A.xls) do (
    	set fic=%%~nxa
    	for /f "tokens=1,2 delims=_" %%n in ('echo !fic!') do (
    		set part1_fic=%%n
    		set part2_fic=%%o
    		set new_fic=!part1_fic!_D!part2_fic:~1,50!
    		rename "%rep%\!fic!" !new_fic!
    	)
    )
    salut,

    pour ne pas avoir de mauvaises surprises

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    Prenez si possible l'habitude, en tant que débutants, de ne mettre qu'une seule instruction par ligne quand c'est possible...
    Pourquoi, les non débutants ont le droit de mettre plusieurs instructions par lignes

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Pourquoi, les non débutants ont le droit de mettre plusieurs instructions par lignes
    Non, mais au moins, ils arrivent à le comprendre...

    Mais tu as raison : plusieurs instructions sur une même ligne, de manière générale, c'est le Mal. Simplement, ça l'est encore plus quand on s'adresse aux débutants...

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci de vos réponses, cependant, j'obtiens le message suivant : la syntaxe de la commande est incorrecte

    J'ai bien changé la variable rep pour qu'elle corresponde à mon cas.

  8. #8
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    bizarre le code de NorocBzh fonctionne chez moi

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bon je vais chercher un peu plus encore alors^^ Ce doit être une erreur de mon côté.

    Merci

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Ok j'ai réussi, je pense que c'était un problème dans les espaces de mon arborescence.

    Encore merci.

  11. #11
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Et on ne pourrait pas enlever la notion de répertoire? Juste mettre le bat dans le répertoire ou il faut exécuter le renommage?

  12. #12
    Rédacteur/Modérateur
    Avatar de NorocBzh
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2008
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 834
    Points : 1 265
    Points
    1 265
    Par défaut
    Pour enlever la notion de répertoire, tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For /R %%a in (\*_A.xls) do (
    	set fic=%%~nxa
    	for /f "tokens=1,2 delims=_" %%n in ('echo !fic!') do (
    		set part1_fic=%%n
    		set part2_fic=%%o
    		set new_fic=!part1_fic!_D!part2_fic:~1,50!
    		rename "%rep%\!fic!" !new_fic!
    	)
    )

  13. #13
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    autre possibilité:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=1* delims=_" %%a in ('dir/b/a-d/s "*_A.xls"') do (ren "%%a_%%b" "%%~na_D.txt")

Discussions similaires

  1. Comment extraire une partie du nom d'un fichier
    Par samy37 dans le forum Shell et commandes POSIX
    Réponses: 3
    Dernier message: 26/09/2012, 17h40
  2. Renommage d'une partie de nom de fichiers en masse et aussi à l'intérieur
    Par sclinard dans le forum Shell et commandes POSIX
    Réponses: 2
    Dernier message: 17/09/2010, 15h02
  3. Réponses: 4
    Dernier message: 27/09/2007, 15h05
  4. [VBA-A]passer en paramètre une partie du nom de tables?
    Par pheno82 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/03/2006, 11h26

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