Script pour copie automatique de fichiers PC vers USB

Résolu/Fermé
7e0o Messages postés 34 Date d'inscription jeudi 11 février 2016 Statut Membre Dernière intervention 3 juillet 2018 - 16 août 2017 à 09:18
7e0o Messages postés 34 Date d'inscription jeudi 11 février 2016 Statut Membre Dernière intervention 3 juillet 2018 - 18 août 2017 à 18:47
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

3 réponses

barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 4 918
Modifié le 17 août 2017 à 02:08
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 :
https://www.dostips.com/forum/viewtopic.php?t=7592

2) Ensuite il faudra convertir HASHSUM.BAT en HASHSUM.EXE grâce à ce logiciel :
https://www.commentcamarche.net/telecharger/developpement/4555-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.”
0
7e0o Messages postés 34 Date d'inscription jeudi 11 février 2016 Statut Membre Dernière intervention 3 juillet 2018
18 août 2017 à 08:33
Bonjour barnabe,

Merci beaucoup pour ton aide .

Je vais tester tout cela.

Bonne journée.
0