Comparer les fichiers de deux dossiers

siamens_duj -  
 siamens_duj -
Bonjour,

J'aimerais créer un traitement qui compare les fichiers de deux dossiers et copie les différences dans un troisième dossier.

Pou faire clair, j'ai un premier dossier "Base" où j'ai des fichiers qui sont ajoutés régulièrement.
J'ai un autre dossier "Archive" où j'ai des fichiers déjà copiés de "Base" et j'en ai un troisième "Base_moto" qui me sert de "passerelle".

Quand un nouveau fichier est ajouté dans le dossier "Base", ce fichier est comparé au dossier "Archive", s'il existe on compare la date et l'heure de modification, s la date heure est identique dans le dossier "Archive", on ne fait rien.
Si la date est différente ou que le fichier n'existe pas, on le copie dans "Base_moto".

Ensuite, je dois créer un autre traitement qui me copie les données des fichiers "Base_moto" dans la base de données de mon application et les fichiers ont déplacés dans "Archive"

Es-ce que quelqu'un pourrait me donner un coup de pouce svp ?

Voici mon code :

@echo off&cls

set $Dossiers="c:\Users\Moi\Desktop\Base" "c:\Users\Moi\Desktop\Base_moto" "C:\Users\Moi\Desktop\ARCHIVE"

for %%a in (%$Dossiers%) do (
for %%b in (%$Dossiers%) do (
for %%c in (%$Dossiers%) do (
if not "%%a"=="%%c" (
set "##$%%a%%b=%%a %%b"))))
for /f "tokens=2,3 delims== " %%a in ('set ##$') do xcopy "%%a" "%%b" /E /D /C /Y


Ce qui ne fonctionne pas dans ce code est que mes fichiers de "Base" sont copiés dans Base_moto et Archive sans faire de comparaison avec Archive
A voir également:

2 réponses

barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 
Bonjour,

Voilà qui répond à la première partie de ton problème :

@echo off
chcp 28591 >nul
setlocal enableextensions enabledelayedexpansion

set "Base=%USERPROFILE%\Desktop\Base"
set "Moto=%USERPROFILE%\Desktop\Base_moto"
set "Archive=%USERPROFILE%\Desktop\ARCHIVE"

cd /d %Base% || exit /b 1

for /f "delims=" %%A in ('dir /b /a-d') do (
set horodatage="%%~tA"
echo. & pushd %Archive%
if exist "%%~A" (
for /f "delims=" %%B in ('dir /b "%%~A"') do (
if not !horodatage!=="%%~tB" (xcopy "%Base%\%%~A" "%Moto%\" /Y)
)
) else (xcopy "%Base%\%%~A" "%Moto%\" /Y)
popd
)

echo. & pause

Il ne te reste plus qu'à copier le contenu des fichiers de "Base_moto" dans la base de données de ton application et déplacer les fichiers dans "Archive"

1
siamens_duj
 
Super merci !
Par contre ce qui est étrange c'est qu'il me demande d'appuyer sur une touche pour copier les fichiers "Appuyer sur une touche pour continuer" malgrè qu'il y est "Y" de précisé dans le code ...
1