Créa fichier batch : renommage de fichiers

Fermé
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 - 15 oct. 2011 à 16:05
Bayamin Messages postés 58 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 12 août 2015 - 16 oct. 2011 à 14:09
Hello,

voilà, dans le cadre d'un job répétitif, je recherche une solution qui me ferait gagner du temps. Je ne sais malheureusement pas programmer en batch et j'aimerais faire appel aux bonnes âmes qui auraient un peu de temps à me consacrer pour me créer un script !

Voici ce dont j'aurais besoin : j'ai un pannel de 120 dossiers vides nommés "page_001" à "page_120". A l'intérieur de chacun d'entre-eux, je dois insérer un fichier psd (un seul) et un nombre de photos jpg indéterminé d'avance.

Le fichier psd que j'insère dans chaque dossier se nomme toujours "montage_qqch" ("qqch" étant une chaine de caractères variable d'un fichier à l'autre) et les fichiers jpg que j'insère dans chaque dossier se nomment soit "IMG_0000" soit "MG_0000" ("0000" étant un nombre variable d'un fichier à l'autre).

Je me demandais s'il serait possible de faire un script qui, pour chacun de mes 120 dossiers, renomme le fichier "montage_qqch.psd" qu'on y insère par "montage.psd" et qui renomme les fichiers "IMG_000.jpg" en "photo_01.jpg", "photo_02.jpg", "photo_03.jpg", etc au fur et à mesure que je les insère dans mon dossier ?

Je ne sais pas si je suis clair ?

En bref, pour l'exemple, j'aimerais que ceci :

DOSSIER :
- montage_33x28_1fen_dyn_004a.psd
- IMG_7589
- IMG_8563
- MG_8422
- IMG_8537

devienne ceci :

DOSSIER :
- montage.psd
- photo_01.jpg
- photo_02.jpg
- photo_03.jpg
- photo_04.jpg

... mais que ce script s'applique aux 120 dossiers et non un seul !

C'est possible, ce genre de script ??

En tous cas, merci d'avance pour l'aide que vous m'apporterez ! (-;
A voir également:

3 réponses

Bayamin Messages postés 58 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 12 août 2015 17
Modifié par Bayamin le 15/10/2011 à 21:12
Et voilà :

@echo off  

goto for  


:actiona  
set A=%1  
set path=%3  
set /A compteura=1  
if "%A:~0,4%"=="IMG_" ( goto testa ) else ( goto fintest )  

:testa  
if EXIST "%path%photo_%compteura%.jpg"  ( goto incrementationa ) else ( rename "%2" "photo_%compteura%.jpg" & goto fintest)   

:incrementationa  
set /A compteura+=1  
goto testa  




:actionb  
set B=%1  
set path=%3  
set /A compteurb=1  
if "%B:~0,4%"=="mont" ( goto testb ) else ( goto fintest )  

:testb  
if EXIST "%path%montage_%compteurb%.psd"  ( goto incrementationb ) else ( rename "%2" "montage_%compteurb%.psd" & goto fintest)   

:incrementationb  
set /A compteurb+=1  
goto testb  


:for  
For /F %%i in ('dir /b/s/A-d') do set arg1=%%~nxi & set path=%%~dpi & call :actiona %%arg1%% %%i %%path%%  

For /F %%i in ('dir /b/s/A-d') do set arg1=%%~nxi & set path=%%~dpi & call :actionb %%arg1%% %%i %%path%%  



echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
echo                     ************************************  
echo                     ********** tache terminee **********  
echo                     ************************************  
echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
echo.  
pause  


:fintest  


Pour les puristes c'est peut être pas fait dans les règles de l'art ( à base de goto, leur bête noire en général) mais ça a le mérite de marcher (chez moi en tout cas).

Faites bien attention à ce que les noms des fichiers ne comportent pas d'espace sinon ça ne marche pas.

Cordialement.
1
Gizmil Messages postés 706 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 3 octobre 2022 65
Modifié par Gizmil le 16/10/2011 à 01:44
Bayamin, je tiens à te remercier, tu viens grandement de me faciliter la vie !! (-:

Ca va être impeccable, à présent, pour moi bosser ! (-;

Juste une petite chose : comme je l'avais fais remarquer, je n'aurais jamais qu'un seul fichier psd dans mes dossier donc pas la peine de les incrémenter numériquement. En fait, j'ai besoin des fichiers psd avec le nom "montage.psd" mais, bon, c'est pas grave, j'ai supprimé la variable compteur dans ton script. Je ne sais pas si c'est très approprié mais ça donne ça :

:testb   
if EXIST "%path%montage.psd"  ( goto incrementationb ) else ( rename "%2" "montage.psd" & goto fintest)


En tous cas, ça marche, c'est ce qui compte ! Encore merci pour ton coup de main parce que ça fait plusieurs jours que je galère pour trouver une solution à ma méthode de travail ! lol

Bref, un tout grand merci ! (-;
0
Bayamin Messages postés 58 Date d'inscription dimanche 9 décembre 2007 Statut Membre Dernière intervention 12 août 2015 17
16 oct. 2011 à 14:09
En fait, tu peux directement virer
if EXIST "%path%montage_%compteurb%.psd"  ( goto incrementationb ) else ( rename "%2" "montage_%compteurb%.psd" & goto fintest)  


et le remplacer par :
rename "%2" "montage.psd"
goto fintest


C'est plus propre et ça économise un processus de test et donc un peu de mémoire (je ne peux pas tester car je ne suis pas chez moi mais ça devrait marcher).

A +
0