Aide pour batch de renommage

Aide pour batch de renommage - Shell/Batch - Programmation

Marsh Posté le 22-02-2007 à 18:25:13    

Salut à tous,
 
bon je précise d'emblée, je suis nul de chez nul en prog mais mon patron s'en tape
il m'a demandé de faire un batch pour renommer automatiquement tous les fichiers d'un répertoire du format
 
xxxxxxxx.yyy
 
en
 
xxxxxxxx_yyy.toto.txt
 
avec la commande rename je pensais m'en sortir mais en fait je n'y arrive pas
 
pour l'instant je me retrouve avec ça :
 
xxxxxxxx.toto.txt
 
 
ren *.* *_*
ren *.* *.toto.txt
 
qqn peut m'aider ? je suis sur qu'il faut jouer avec les variables mais je galère


Message édité par akilion le 12-04-2007 à 16:12:44

---------------
en plein changement de carrière, 30 ans l'année de tous les dangers !
Reply

Marsh Posté le 22-02-2007 à 18:25:13   

Reply

Marsh Posté le 23-02-2007 à 16:14:39    

Personne pour m'aider ?
 
je sais qu'il faut utiliser une boucle for mais j'y pige que dalle (je suis pas programmeur je le rappelle et le shell c'est du chinois pour moi)

Reply

Marsh Posté le 25-02-2007 à 16:56:44    

ren *.yyy *.
ren *. *_yyy.toto.txt

Reply

Marsh Posté le 26-02-2007 à 11:09:09    

Merci mais en fait j'ai peut etre pas été assez clair dans la description de mon problème.
 
en fait yyy pour l'extension c'est un exemple, les fichiers que je dois renommer ont des extensions diverses :
 
A06
B34
ect ect ect
 
D'où la difficulté à le faire avec juste la commande rename (en fait le type d'extension est aléatoire).


---------------
en plein changement de carrière, 30 ans l'année de tous les dangers !
Reply

Marsh Posté le 26-02-2007 à 12:25:04    

Et bien donne encore plus d'info, dans le dossier où il y a les fichiers avec extension aléatoire, qu'est ce qu'il y a d'autre ?

Reply

Marsh Posté le 26-02-2007 à 15:14:09    

blastkiller a écrit :

Et bien donne encore plus d'info, dans le dossier où il y a les fichiers avec extension aléatoire, qu'est ce qu'il y a d'autre ?


 
 
rien d'autre, les fichiers sont déposés par une appli dans ce format et il faut que je les renomme dans un autre format
 
abjkmfjsd.a15 doit donner abjkmfjsd_a15.toto.txt par exemple
cjklmkunmnfmsfuyq fsdqdfq.b21 doit donner cjklmkunmnfmsfuyq fsdqdfq_b21.toto.txt
 
ect ect
 
au niveau du nom de fichier c'est variable, l'extension fait 3 caractères c'est la seule condition fixe.

Reply

Marsh Posté le 26-02-2007 à 16:52:09    

@echo off
for /f "tokens=2 delims=." %%a in ('dir /b') do call :commande %%a
exit
:commande
set ext=%1
if %ext%==bat goto suite
ren *.%ext% *.
ren *. *_%ext%.toto.txt
:suite

Reply

Marsh Posté le 26-02-2007 à 17:06:17    

blastkiller a écrit :

@echo off
for /f "tokens=2 delims=." %%a in ('dir /b') do call :commande %%a
exit
:commande
set ext=%1
if %ext%==bat goto suite
ren *.%ext% *.
ren *. *_%ext%.toto.txt
:suite


 
 
ca marche nikel !!!!
 
merci !!!
 
(je comprends rien au shell mais je savais bien que c'était possible)


---------------
en plein changement de carrière, 30 ans l'année de tous les dangers !
Reply

Marsh Posté le 12-04-2007 à 16:16:15    

Salut,
 
en fait j'ai encore un souci avec ce batch, ça marche super bien quand les fichiers sont de type variable comme b21, A15 ou autre, par contre si j'ai des fichiers en .txt ça ne fonctionne plus.
 
exemple , sur un fichier A1074.txt le batch me donne un fichier A1074_txt.toto et pas A1074_txt.toto.txt
 
à noter qu'avec un seul fichier .txt cela fonctionne, par contre dès qu'il ya plusieurs fichiers .txt ça ne fonctionne plus.
 
Help ! j'ai vraiment du mal à comprendre pourquoi ça foire !


---------------
en plein changement de carrière, 30 ans l'année de tous les dangers !
Reply

Marsh Posté le 12-04-2007 à 17:11:06    

@echo off
set var=0
for /f "tokens=2 delims=." %%a in ('dir /b') do call :commande %%a
pause
exit
:commande
set ext=%1
if %ext%==txt if %var%==1 goto suite
if %ext%==txt set var=1
if %ext%==bat goto suite
ren *.%ext% *.
ren *. *_%ext%.toto.txt
:suite

Reply

Marsh Posté le 12-04-2007 à 17:11:06   

Reply

Marsh Posté le 12-04-2007 à 17:15:00    

Ha oui ! énorme !!!!
 
merci milles fois pour ton aide BlastKiller !
 
Juste une dernière chose, comme faire pour que le batch parcourt aussi les sous répertoires ? j'ai essayé de rajouter /s dans le in ('dir /b /s') mais ça fonctionne pas ? après promis je t'embête plus.


---------------
en plein changement de carrière, 30 ans l'année de tous les dangers !
Reply

Marsh Posté le 12-04-2007 à 17:48:00    

@echo off
set var=0
 
for /f "tokens=2 delims=." %%c in ('dir /b /s') do call :commande %%c
goto suite
:commande
set ext=%1
if %ext%==txt if %var%==1 goto :eof
if %ext%==txt set var=1
if %ext%==bat goto :eof
ren *.%ext% *.
ren *. *_%ext%.toto.txt
goto :eof
 
:suite
for /f "delims=" %%a in ('dir /b /s /a:d') do call :cmd "%%a"
pause
exit
 
:cmd
set var=0
set folder=%1
cd %folder%
 
for /f "tokens=2 delims=." %%b in ('dir /b') do call :commande %%b
goto :eof
:commande
set ext=%1
if %ext%==txt if %var%==1 goto :eof
if %ext%==txt set var=1
if %ext%==bat goto :eof
ren *.%ext% *.
ren *. *_%ext%.toto.txt


Message édité par blastkiller le 12-04-2007 à 17:48:08
Reply

Marsh Posté le 13-01-2011 à 08:05:56    

Magnifiquement développé :love:
 
Si blastkiller ou quelqu'un d'autre pouvais passer par là, çà concerne aussi du batch :ange:  
 
http://forum.hardware.fr/hfr/Progr [...] 2074_1.htm


Message édité par Web Free Software le 13-01-2011 à 08:08:31

---------------
Web Free Software http://webfreesoftware.net Les logiciels gratuits
Reply

Sujets relatifs:

Leave a Replay

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