Menu

Comparer les fichiers de deux dossiers

- - Dernière réponse :  siamens_duj - 4 févr. 2019 à 09:25
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
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
12173
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
20 février 2019
2461
1
Merci
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"


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56282 internautes nous ont dit merci ce mois-ci

Commenter la réponse de barnabe0057
0
Merci
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 ...
Commenter la réponse de siamens_duj