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

Résolu
francky172 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 Emilien -
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 1435 Date d'inscription   Statut Membre Dernière intervention   312
 
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 1435 Date d'inscription   Statut Membre Dernière intervention   312
 
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 1435 Date d'inscription   Statut Membre Dernière intervention   312
 
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   Statut Membre Dernière intervention  
 
Un grand merci à vous.

Votre ligne de commande fonctionne à merveille.

@ Bientôt
0
caiman2 Messages postés 1435 Date d'inscription   Statut Membre Dernière intervention   312
 
A votre service.
Amicalement
0
Emilien > caiman2 Messages postés 1435 Date d'inscription   Statut Membre Dernière intervention  
 

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
 

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