[batch] Renommer 1 caractère d'1 fichier

Résolu/Fermé
francky172 Messages postés 2 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 22 novembre 2010 - Modifié par francky172 le 22/11/2010 à 13:50
 Emilien - 20 juil. 2022 à 16:04
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 ?
A voir également:

3 réponses

caiman2 Messages postés 1432 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 8 avril 2011 308
Modifié par caiman2 le 22/11/2010 à 14:35
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.
0
caiman2 Messages postés 1432 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 8 avril 2011 308
Modifié par caiman2 le 22/11/2010 à 14:39
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 !
0
caiman2 Messages postés 1432 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 8 avril 2011 308
22 nov. 2010 à 15:26
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 ****
0
francky172 Messages postés 2 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 22 novembre 2010
22 nov. 2010 à 16:02
Un grand merci à vous.

Votre ligne de commande fonctionne à merveille.

@ Bientôt
0
caiman2 Messages postés 1432 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 8 avril 2011 308
22 nov. 2010 à 16:05
A votre service.
Amicalement
0
Emilien > caiman2 Messages postés 1432 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 8 avril 2011
20 juil. 2022 à 15:58

Bonjour,

je cherche à faire quasiment la même chose mais avec des parenthèses mises en fin de nom de fichier texte.

exemple toto(1).txt a remplacer par toto1.txt ou toto919.txt

soit supprimer les parenthèses soit les remplacer par un chiffre quelconque.

12ans après votre précédent message êtes vous toujours prêt à aider un novice :) ?

merci par avance 

0
Emilien > Emilien
20 juil. 2022 à 16:04

je viens de trouver, je mets la solution ici si jamais ça peut aider

cd C:\temp
setlocal enabledelayedexpansion
for %%a in (*.csv) do (
set f=%%a
set f=!f:^(=!
set f=!f:^)=!
ren "%%a" "!f!"
)

0