Menu

[batch] Renommer 1 caractère d'1 fichier [Résolu/Fermé]

Messages postés
2
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
22 novembre 2010
-
Bonjour,
Ayant fait une centaines de recherche, je ne trouve toujours pas le bon code pour modifier un caractère en plein milieu d'un fichier !

Exemple : prenom.nom.txt
J'aimerais avoir : prenom_nom.txt
Sachant que ce code n'est pas censé connnaître le nom du fichier.

Il faudrait que ce code renomme tout les aaaa.bbb.txt en aaaa_bbb.txt dans un même dossier.

Si possible en batch car, j'ai déjà plusieurs lignes en batch dans ce même script.

J'ai tenté les commandes for / set ... en vain. Trop dur!

Configuration Win XP SP3.

Avec la commande for, en admettans que le ou les fichiers sont dans d:
j'arrive à ça :


@echo off
cd d:
set new=_
for %%. in (*.txt) do rename *.* %new%%.*

et là, les fichiers se renomment comme suit :
mmm.ppp.txt = _.ppp.txt
prenom.nom.txt = _.nom.txt

Qui pourrait m'aider ?
Afficher la suite 

3 réponses

Messages postés
1438
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
8 avril 2011
252
0
Merci
Bonjour,

Faite ceci:

REM *** debut programme ****
dir /B c:\temp\temp > c:\temp\files_list.txt
for /F "tokens=1,2,3 delims=. " %%i IN (c:\temp\files_list.txt) do c:\temp\temp\%%i.%%j.%%k c:\temp\temp\%%i_%%j.%%k
REM *** fin programme ******

Faites l'essai en changeant "rename" par "echo"

En fait je vous fais générer un fichier liste qui contient la liste des fichiers à renommer , ensuite une utilise l'iterateur for /F ou on lit et manipule les noms des fichiers dans ce fichier liste.
Dans cette exemple les fichiers à renommer sont dans c:\temp\temp

Je l'ai testé avec succès

Amicalement
Philippe
Dieu a t'il créé le cerveau ou est-ce l'inverse ?
Heureux les simples d'esprit parce que le royaume des cieux leur appartient.
caiman2
Messages postés
1438
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
8 avril 2011
252 -
Attention les lignes :
for /F "tokens=1,2,3 delims=. " %%i IN (c:\temp\files_list.txt) do c:\temp\temp\%%i.%%j.%%k c:\temp\temp\%%i_%%j.%%k

doit être en une seule ligne !
Messages postés
1438
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
8 avril 2011
252
0
Merci
REM *** debut programme ****
dir /B c:\temp\temp > c:\temp\files_list.txt
cd c:\temp\temp
for /F "tokens=1,2,3 delims=. " %%i IN (c:\temp\files_list.txt) do rename %%i.%%j.%%k %%i_%%j.%%k
cd c:\temp
REM *** fin programme ****
Messages postés
2
Date d'inscription
lundi 22 novembre 2010
Statut
Membre
Dernière intervention
22 novembre 2010
0
Merci
Un grand merci à vous.

Votre ligne de commande fonctionne à merveille.

@ Bientôt
caiman2
Messages postés
1438
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
8 avril 2011
252 -
A votre service.
Amicalement