Comparer les fichiers de deux dossiers
siamens_duj
-
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 :
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
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:
- Comparateur de fichiers et dossiers
- Comparateur amazon - Accueil - Commerce
- Explorateur de fichiers - Guide
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Comparateur prix amazon - Guide
2 réponses
Bonjour,
Voilà qui répond à la première partie de ton problème :
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"
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"