Чтобы ответить на исходный вопрос, почему ваш скрипт скопировал только структуру папок...
Это было связано с параметрами xcopy, вы указали только эти /m/e/y:
/M = Копирует только файлы с установленным атрибутом архива, отключает атрибут архива.
/E = Копирует каталоги и подкаталоги, включая пустые.
/Y = Подавить подтверждения.
Обратите внимание, что, как и в ответе, данном ранее, просто добавив /D и удалив /M, это поможет, пожалуйста, проверьте, что говорится в справке о /D:
/D:m-d-y Копирует файлы, измененные в указанную дату или позже. Если дата не указана, копируются только те файлы, исходное время которых новее, чем время назначения.
Если вам нужно создать резервную копию нескольких папок за один запуск и иметь файл журнала с их выполнением, вы можете сделать что-то вроде этого:
@echo off
call:backUpFolder "C:\Users\XXX\folder1" "C:\Backup\folder1"
call:backUpFolder "C:\Users\XXX\folder2" "C:\Backup\folder2"
call:backUpFolder "C:\Users\XXX\folder3" "C:\Backup\folder3"
goto:eof
::--------------------------------------------------
::-- This is the function to back up one folder
::--------------------------------------------------
:backUpFolder
set source="%~1"
set destination="%~2"
echo copying from %source% to %destination%
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%
xcopy %source%"\*" %destination%"\*" /s/d/y/c/v/r
echo %ldt%: %source% to %destination% >> backHistory.log
echo Finished copying %source% to %destination%
goto:eof
person
Marco Vargas
schedule
23.12.2016