Sujet: "Synchro" entre fichiers d'extensions différentes
28/03/2013 @ 10:28:57: Georgio: "Synchro" entre fichiers d'extensions différentes
Bonjour à tous

Bon le titre est un peu confus, mais je ne trouvais pas comment exprimer mon problème différemment.

Je vous explique donc en vitesse :

J'ai dans un répertoire 3200 fichiers RAW(enfin .nef).

Dans un deuxieme dossier j'ai les mêmes photos mais en jpeg (qui résulte en fait de la conversion des RAW du premier dossier sans retouches). Dans ce deuxième dossier j'ai effectué un tri et il ne me reste "que" 1000 photos.

Le gros du problème est de "synchroniser" les dossiers afin qu'il ne me reste dans le dossier 1 que les RAW des photos qui se trouvent en jpeg dans le 2eme dossier (et une fois de plus je trouve pas une autre manière d'éclaircir cette phrase) afin de pouvoir traiter les RAW.

Au passage, l'OS est windows 8

En espérant que quelqu'un puisse m'aider :grin:

(J'suis sûr qu'en le faisant à la main j'vais me planter ^^ )
28/03/2013 @ 10:39:05: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Donc, si je comprends bien, tu as deux répertoires.
Le premier contient 3200 fichier NEF.
Le second contient 1000 fichier JPEG.
Les 1000 fichiers JPEG ont le même nom que 1000 des 3200 fichiers NEF (à l'extension près).
Tu voudrais virer les 2200 fichier NEF qui n'ont pas d'équivalent JPEG.

C'est ça?
28/03/2013 @ 10:55:52: Georgio: "Synchro" entre fichiers d'extensions différentes
Exactement JC :grin:
28/03/2013 @ 11:50:50: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Voici un batch qui fait ce que tu veux. :smile:

@echo off
cls

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

mkdir c:\temp\F1\Orphans\
FOR /R C:\temp\F1\ %G IN (*.nef) DO (call :subroutine "%G")



GOTO :eof

:subroutine
set NEFFile=%1
Set JPEGFile=%NEFFile:nef=jpeg%

rem --------- VOIR CI DESSOUS -----------
rem change "\temp\F1" par le repertoire qui contient les fichier NEF (sans le drive:)
rem change "\temp\F2" par le repertoire qui contient les fichier JPEG (sans le drive:)

Set JPEGFile=%JPEGFile:\temp\F1=\temp\F2%


IF NOT EXIST (

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

move c:\temp\F1\Orphans\
)

GOTO :eof


Si ce n'est pas assez clair, n'hésite pas à le dire.
Il n'y a aucun effacement de fichier. Je ne fais que les déplacer dans un répertoire "Orphans".
28/03/2013 @ 12:48:41: Georgio: "Synchro" entre fichiers d'extensions différentes
Ma réponse n'est pas passée :sad:

Je recommence donc :grin:

Je vais tester ca tout de suite et je te tiens au courant si j'ai un problème :grin:

Mais déjà un tout grand merci :grin:
28/03/2013 @ 13:08:07: Georgio: "Synchro" entre fichiers d'extensions différentes
Bon j'ai un problème (oui je suis un noob ^^ )

J'ai modifié les répertoires dans le batch. Ensuite je l'ai enregistré en .bat

Je l'ai lancé en ligne de commande et j'obtiens uniquement "subroutine était inattendu"

Voici ce que j'ai dans le bat :


@echo off
cls

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

mkdir c:\photo\thairaw\Orphans\
FOR /R C:\photo\thairaw\ %G IN (*.nef) DO (call :subroutine "%G")



GOTO :eof

:subroutine
set NEFFile=%1
Set JPEGFile=%NEFFile:nef=jpeg%

rem --------- VOIR CI DESSOUS -----------
rem change "\temp\F1" par le repertoire qui contient les fichier NEF (sans le drive:)
rem change "\temp\F2" par le repertoire qui contient les fichier JPEG (sans le drive:)

Set JPEGFile=%JPEGFile:\photo\thairaw=\photo\thaijpg%


IF NOT EXIST (

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

move c:\photo\thairaw\Orphans\
)

GOTO :eof
28/03/2013 @ 13:29:00: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Damned! Les doubles % sont devenus des simples % dans le forum.


@echo off
cls

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

mkdir c:\temp\F1\Orphans\
FOR /R C:\temp\F1\ %G IN (*.nef) DO (call :subroutine "%G")




GOTO :eof

:subroutine
set NEFFile=%1
Set JPEGFile=%NEFFile:nef=jpeg%

rem --------- VOIR CI DESSOUS -----------
rem change "\temp\F1" par le repertoire qui contient les fichier NEF (sans le drive:)
rem change "\temp\F2" par le repertoire qui contient les fichier JPEG (sans le drive:)

Set JPEGFile=%JPEGFile:\temp\F1=\temp\F2%


IF NOT EXIST (

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

move c:\temp\F1\Orphans\
)

GOTO :eof
28/03/2013 @ 13:30:10: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Bordel... Toujours pas de double %
28/03/2013 @ 13:32:54: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
J'ai du mettre un blanc entre les doubles %. Il faut virer le blanc aux deux endroits où il y a "% %"

@echo off
cls

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

mkdir c:\temp\F1\Orphans\
FOR /R C:\temp\F1\ % %G IN (*.nef) DO (call :subroutine "% %G")




GOTO :eof

:subroutine
set NEFFile=%1
Set JPEGFile=%NEFFile:nef=jpeg%

rem --------- VOIR CI DESSOUS -----------
rem change "\temp\F1" par le repertoire qui contient les fichier NEF (sans le drive:)
rem change "\temp\F2" par le repertoire qui contient les fichier JPEG (sans le drive:)

Set JPEGFile=%JPEGFile:\temp\F1=\temp\F2%


IF NOT EXIST (

rem --------- VOIR CI DESSOUS -----------
rem change "c:\temp\F1\" par le repertoire qui contient les fichier NEF

move c:\temp\F1\Orphans\
)

GOTO :eof
28/03/2013 @ 13:34:39: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Pour faire court. Dans le ligne qui commence par FOR, il faut que le signe % qui précède la lettre G soit double. C'est tout. :oh:
28/03/2013 @ 13:37:59: Georgio: "Synchro" entre fichiers d'extensions différentes
Merci :wink:

Mais toujours le même message à propos de la sub routine

je reverifie encore ma modification du batch
28/03/2013 @ 13:41:33: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
renomme ton fichier .bat en .cmd si tu veux bien :smile:
28/03/2013 @ 13:44:12: Georgio: "Synchro" entre fichiers d'extensions différentes
Pas de changement en changeant l'extension. Le dossier "Orphans" se crée bien mais toujours le probleme de "subroutine"
28/03/2013 @ 13:51:24: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
tu as bien doublé les % dans la ligne FOR? Je viens d'essayer ici, sur un windows 8 et ça fonctionne.
Mais en laissant les simples %, j'ai bien le même message d'erreur que toi :smile:
28/03/2013 @ 13:57:21: Georgio: "Synchro" entre fichiers d'extensions différentes
Bon la on avance vraiment...

J'ai donc supprimé les espaces entre les %

Mais là il me vire tous les nef dans le dossier Orphans
28/03/2013 @ 13:59:32: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
c'est qu'il ne trouve pas d'équivalent en JPEG dans l'autre folder.
Les fichiers ont bien les mêmes noms?

FolderNEF
- fichier1.nef
- fichier2.nef
- fichier3.nef

FolderJPEG
- fichier1.jpeg
- fichier3.jpeg
28/03/2013 @ 14:00:59: Georgio: "Synchro" entre fichiers d'extensions différentes
je crois que ca vient du fait que les fichiers sont en .JPG (MAJ etc...) je teste de modifier ca de mon coté :smile:

J'ai remplacé les jpeg par JPG mais toujours pas de modification au niveau du résultat

Mais au moins j'ai plus de message d'erreur :grin:

Ne te tracasse pas trop j'vais encore chipotter un peu pour voir ce que ca donne :wink:
28/03/2013 @ 14:03:34: H2G2: "Synchro" entre fichiers d'extensions différentes
Je serais bien incapable de pondre du code, mais au cas où le joli batch de JC ne produirait pas le résultat souhaité, il y a moyen de faire ce que tu cherches (sous Win 7, en tout cas) en jouant un peu avec le soft Ant Renamer (du vénéré antp :prosterne: ).
Par ex.:
Tu fais une copie de ton dossier 2 vers un dossier 3 où tu remplaces (avec Ant Renamer) toutes les extensions "JPEG" par "NEF".
Tu déplaces (ou tu copies pour pas tout niquer si ça foire) tout le contenu de ton dossier 1 vers le dossier 3, mais en demandant de conserver les fichiers du même nom pour que Windows ajoute un (2) dans le nom des nouveaux fichiers en double.
Toujours avec Ant Renamer, tu fais un remplacement de chaîne (en incluant l'extension) de "(2).NEF" par ".BON" (par ex.).
Dans ton dossier tu tries par extension et tu vires tous les "NEF".
Il ne te reste plus qu'à remplacer les extensions "BON" qui sont les seuls fichiers à rester par "NEF" et le tour est joué.
Maintenant, il y a sûrement plus simple, hein. :petrus:
28/03/2013 @ 14:05:27: Georgio: "Synchro" entre fichiers d'extensions différentes
Et voila :wink:

J'avais juste oublié une occurence de jpeg dans le script

Ca marche nickel ^^

Merci merci...

PS :J'vais rajouter des remarques dans le script pour ne plus me faire passer pour un con la prochaine fois :grin:

N'empêche la j'ai fait fort niveau boulet attitude :tongue:
28/03/2013 @ 14:16:13: Jean-Christophe: "Synchro" entre fichiers d'extensions différentes
Boh, ça marche, c'est le principal.
Et puis, on a pas été aidé par le forum qui a sucré les doubles % sans raison ni message d'avertissement :oh:
Retour