Script pour copie automatique de fichiers PC vers USB [Résolu/Fermé]

Signaler
Messages postés
34
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
3 juillet 2018
-
7e0o
Messages postés
34
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
3 juillet 2018
-
Bonjour tout le monde,

Je suis à la recherche d'un script pour réaliser la copie des fichiers d'un répertoire automatiquement tous les 15 minutes, l'objectif c'est d'avoir toujours les fichiers du jour sur une clé USB et les effacer sur le PC.

Quelqu'un aurait une petite astuce, ou un petit code a montré pour m'aider?

Merci par avance pour votre aide.
Meilleures salutations
Messages postés
12429
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
7 décembre 2019
2451
Bonjour,

J'ai crée un script qui permet de synchroniser 2 dossiers.

1) Tout d'abord tu dois copier le script HASHSUM.BAT disponible ici :
http://www.dostips.com/forum/viewtopic.php?t=7592

2) Ensuite il faudra convertir HASHSUM.BAT en HASHSUM.EXE grâce à ce logiciel :
http://www.commentcamarche.net/download/telecharger-34057824-bat-to-exe-converter

3) Ensuite tu copies HASHSUM.EXE dans C:\Windows\System32

4) Ensuite tu peux utiliser mon script :
@echo off
title Synchronisation de dossiers
mode con: cols=75 lines=45
Setlocal enableextensions enabledelayedexpansion
color 0A

:: ---------------------------
:: on définit les variables
:: ---------------------------

set source=%USERPROFILE%\Desktop\Titi\
set destination=D:\Toto
set liste=%TEMP%\empreintes.md5


:: --------------------------------------
:: on clone l'arborescence des dossiers
:: --------------------------------------

cd /d %source% || exit /B 1

for /f "delims=" %%A in ('dir /b /ad /s') do (

set "str=%%~A"
for /f "tokens=1,2 delims=µ" %%W in ("!str:%source:~3%=µ!") do (if not exist "%destination%\%%~X" (mkdir "%destination%\%%~X"))

)


:: ---------------------------------------------------------------------
:: on calcule et on stocke l'empreinte des fichiers de la destination
:: ---------------------------------------------------------------------

echo. > "%liste%"

(hashsum.exe /a MD5 /p "%destination%" /s *.*) >> "%liste%"


:: --------------------------------------------------------
:: on calcule l'empreinte de chaque fichier de la source
:: --------------------------------------------------------

for /f "delims=" %%E in ('2^>nul dir /b /a-d /s "*.*"') do (

for /f "tokens=1" %%H in ('hashsum.exe /a MD5 /p "%%~dpE" "%%~nxE"') do (call :comparaison "%%~E" "%%~H")

)

echo. & pause
endlocal
exit /B


:: -------------------------------------------
:: fonction de synchronisation des fichiers
:: -------------------------------------------

:comparaison

set /a doublon=0

for /f "usebackq skip=1 tokens=1" %%L in ("%liste%") do (if "%%~L"=="%~2" (set /a doublon=1))

if !doublon! EQU 0 (

set "rts=%~1"
for /f "tokens=1,2 delims=µ" %%W in ("!rts:%source:~3%=µ!") do (>nul copy /Y "%~1" "%destination%\%%~X")
echo. & echo ### OK ### %~nx1

) else (echo. & echo ### -- ### %~nx1)

goto :eof

rem

N'oublie pas de modifier les variables source et destination au début du script.

Pour lancer le script tous les 15 minutes tu peux créer une tâche planifiée.

edit : j'ai oublié d'effacer les fichiers de la source à la fin, je m'en occuperai demain soir.


“L'intelligence artificielle se définit comme le contraire de la bêtise naturelle.”
7e0o
Messages postés
34
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
3 juillet 2018

Bonjour barnabe,

Merci beaucoup pour ton aide .

Je vais tester tout cela.

Bonne journée.
Messages postés
5308
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
12 décembre 2019
832
Salut 7e0o,

Si tu as un système raisonnablement récent, tu peux simplement utiliser la commande "robocopy" qui existe sur Windows depuis Windows 7

https://technet.microsoft.com/en-us/library/cc733145%28v=ws.11%29.aspx

Elle dispose d'options de synchronisation ou de déplacement, vérifie toute seule les timestamps, dispose d'options pour monitorer périodiquement toutes les n minutes en détectant les changements, peut copier les sous-répertoires, peut faire des copies multi-thread pour accélérer les opérations,...


Dal
7e0o
Messages postés
34
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
3 juillet 2018

Hello Dal,

Merci pour ton aide, ça ma l'air plus simple ta solution.

Merci beaucoup.

Bonne journée.
Messages postés
12429
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
7 décembre 2019
2451
ROBOCOPY est effectivement beaucoup plus simple, et certainement plus rapide que mon script, mais fonctionne différemment. Cette commande se base sur les horodatages et les tailles de fichiers tandis que mon script se base sur les empreintes des fichiers, ceci explique cela.
7e0o
Messages postés
34
Date d'inscription
jeudi 11 février 2016
Statut
Membre
Dernière intervention
3 juillet 2018

Merci pour l'information.

Si tu aussi répondre à mes autres questions, je vois que tu t'y connais pas mal.

Merci par avance.
Salutations.