echo off
:: ======================================================== Copy OneDrive data =================================================
::  Destination: Make somewhere on a certain drive a directory called "Save_OneDrive_Data" e.a. X:\Backup\Save_OneDrive_Data
::               >>Note: Make sure your Paths does not contain spaces!!!!
::               Create inside this Save_OneDrive_Data a directory called "Logs"
::               Just start this script as admin. After it is done inspect the logfile: copy_onedrive.log
:: =============================================================================================================================

%systemroot%\System32\fsutil dirty query %systemdrive%
if %errorlevel% neq 0 (echo You try to run this script, but you are not admin. Use: Run as admin.)
if %errorlevel% equ 0 (echo OK. You run this script as Admin.)

Set SourceDir="C:\Users\<username>\OneDrive"
Set DestinationDir="X:\Backup\Save_OneDrive_Data"

Set LogDir="%DestinationDir%\Logs"
%systemroot%\System32\Robocopy %SourceDir% %DestinationDir% /S /E /COPYALL /PURGE /MIR /XA:SH /R:0 /W:0 /XJD /XD > %LogDir%\copy_onedrive.log

if ERRORLEVEL 16 echo ***FATAL ERROR*** 
if ERRORLEVEL 15 echo OKCOPY + FAIL + MISMATCHES + XTRA 
if ERRORLEVEL 14 echo FAIL + MISMATCHES + XTRA 
if ERRORLEVEL 13 echo OKCOPY + FAIL + MISMATCHES 
if ERRORLEVEL 12 echo FAIL + MISMATCHES
if ERRORLEVEL 11 echo OKCOPY + FAIL + XTRA 
if ERRORLEVEL 10 echo FAIL + XTRA 
if ERRORLEVEL 9 echo OKCOPY + FAIL 
if ERRORLEVEL 8 echo FAIL 
if ERRORLEVEL 7 echo OKCOPY + MISMATCHES + XTRA 
if ERRORLEVEL 6 echo MISMATCHES + XTRA 
if ERRORLEVEL 5 echo OKCOPY + MISMATCHES 
if ERRORLEVEL 4 echo MISMATCHES 
if ERRORLEVEL 3 echo OKCOPY + XTRA 
if ERRORLEVEL 2 echo XTRA 
if ERRORLEVEL 1 echo OKCOPY 
if ERRORLEVEL 0 echo No Change 

echo on
pause
