Créa fichier batch : renommage de fichiers
Gizmil
Messages postés
706
Date d'inscription
Statut
Membre
Dernière intervention
-
Bayamin Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
Bayamin Messages postés 58 Date d'inscription Statut Membre Dernière intervention -
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 ! (-;
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:
- Créa fichier batch : renommage de fichiers
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Fichier batch - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
Et voilà :
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.
@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.
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 :
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 ! (-;
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 ! (-;
En fait, tu peux directement virer
et le remplacer par :
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 +
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 +