Renommer plusieurs fichiers en une fois

Fermé
matt240490 - 30 août 2013 à 12:46
 matt240490 - 30 août 2013 à 15:25
Bonjour,

dans un répertoire, j'ai plusieurs fichiers.
Exemple :

Ventes01012012.txt
Ventes02012012.txt
...

Je veux pouvoir les renommer tous en une fois :
Ventes1.txt
Ventes2.txt
...

J'ai pensé à rename *.* Ventes.txt, pensant que le second allait être en Ventes - Copie.txt

Mais non, seul le premier est renommé.

Comment faire pour que tous les fichiers soient renommés et obtenir ce que je veux ?

Merci beaucoup de votre aide.

11 réponses

juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
30 août 2013 à 13:42
Bonjour,

Je n'aime pas batch donc je ne ne testerai pas le code que je vais écrire !
Je me rappelle avoir déjà codé exactement ce que tu demande.

C'était dans ce style :
set /A i=0
for %%f in (*) do (
set /A i+=1
rename %%f Ventes%%i.txt
)
pause


Fais une copie de ton dossier avant pour être sûr, et désolé s'il y a des fautes de syntaxe !

Cdlt,
0
Arf, ça ne fonctionne pas.
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
30 août 2013 à 13:49
Qu'est ce qui ne fonctionne pas ? Comment ça réagit ? Tu peut donner la sortie s'il te plait ?
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
30 août 2013 à 14:18
Bon j'ai fait un petit effort. Voici pour toi, chez moi ça marche :
@echo off

set /a ii=0
setlocal ENABLEDELAYEDEXPANSION

for %%f in (*) do (
set /A ii+=1
rename %%f Ventes!ii!.txt
)
pause


J'avais oublié qu'il fallait prendre en compte l'expansion retardée, désolé.


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
30 août 2013 à 14:23
hello
je modifierais le code de juliencolin54 comme ça:
setlocal enableDelayedExpansion
set /A i=0
for %%f in (*) do (
set /A i+=1
rename %%f Ventes!i!.txt
)
pause

0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
30 août 2013 à 14:42
En effet c'est plus logique, merci :)
0
Merci, ça fonctionne.
Beau boulot :)
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
Modifié par juliencolin54 le 30/08/2013 à 15:02
De rien,
at your service !

Penses à mettre "Résolu"

Software is like sex, it's better when it's free - Linus Torvald
0
Par contre, il faudrait juste une petite correction, qu'à chaque fois que je relance le .bat, il reparte de 1...

Sinon, il continue d'incrémenter
0
juliencolin54 Messages postés 217 Date d'inscription dimanche 22 juillet 2012 Statut Membre Dernière intervention 1 octobre 2013 55
30 août 2013 à 15:22
Là il repart à zéro ou pas ?
0
Si je le fais 1x, il s'appellera bien Ventes1.
Si je relance la procédure, il devient Ventes2.
Il faudrait qu'il le remplace et l'écrase.
0