Script pour renommer les fichiers comportant un certain mot

Script pour renommer les fichiers comportant un certain mot - Win 7 - Windows & Software

Marsh Posté le 10-04-2017 à 10:59:33    

Bonjour,
 
J'aurais besoin d'un coup de pouce pour résoudre un problème :
J'ai une arborescence de dossiers dans lesquels j'ai des fichiers qui de base sont nommés client.xxx.txt, client.yyy.txt, zzz.client.xlsx....
Je souhaiterais automatiser le renommage de ces fichiers en remplaçant "client" par le nom du client, que j'aurais préalablement rentré dans la variable %client%.
Les différents fichiers en question sont des sous-répertoires différents.
 
Mon script est un simple .bat.
Merci de votre aide.

Reply

Marsh Posté le 10-04-2017 à 10:59:33   

Reply

Marsh Posté le 10-04-2017 à 11:15:59    

Je suppose que le dossier est au nom du client ?
 
Si oui, une simple boucle sur tes sous dossiers (avec récupération du nom) te permettra de renommer tout ça.
 
Question scripting, c'est plus simple en powershell qu'en batch.


---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
Reply

Marsh Posté le 10-04-2017 à 11:19:43    

Bonjour,
 
Alors, je suis parti sur une boucle mais je suis pas certain d'avoir bien fait le truc.
 
dans mon script :  
set /P nomclient=Quel est le nom du client ?  
 
j'essaie ensuite la boucle ....
for /f "tokens=*" %%i in ('dir /S *client*) do (ren *client* *%nomclient%*)
Ca ne fonctionne pas et je pense que je n'ai pas la bonne méthode.
 
Je vais me mettre à powershell par la suite, mais pour ce cas-ci je crois qu'un simple .bat doit suffire.

Reply

Marsh Posté le 10-04-2017 à 12:15:07    

perso j'aurais fait un truc comme ça :

Code :
  1. $nomclient='<nom client>'
  2. ls -Path <chemin> |  ForEach-Object {$_ | Rename-Item -NewName $_.Name.Replace('client', '$nomclient')}

Message cité 1 fois
Message édité par nex84 le 10-04-2017 à 12:15:21

---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
Reply

Marsh Posté le 10-04-2017 à 12:29:20    

à la limite, oui en powershell..
j'ai rajouté -r pour le ls pour qu'il regarde dans les sous-répertoires.
 
par contre, j'ai une erreur avec le rename-item
 
je suis en train de chercher pas à pas

Reply

Marsh Posté le 10-04-2017 à 12:56:22    

nex84 a écrit :

perso j'aurais fait un truc comme ça :

Code :
  1. $nomclient='<nom client>'
  2. ls -Path <chemin> |  ForEach-Object {$_ | Rename-Item -NewName $_.Name.Replace('client', '$nomclient')}



 
Pour ce qu'il me fallait, c'était presque ça, voilà ce qui fonctionne :  
get-childitem -recurse -file | rename-item -newname {$_.name -replace 'client', $nomclient}
 
Il cherche tous les fichiers récursivement dans mon dossier et remplace dans le nom de ces fichiers le mot "client" par le nom du client précédemment renseigné dans la variable $nomclient.
 
Merci à toi nex84, j'aurais vraiment pensé que cela serait simple avec un .bat !!
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed