Код:

@echo off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
set Lst=D:\spisok.txt
set Src=D:\data1\
set Dst=D:\data2\
for /f "UseBackQ Delims=" %%S in ("%Lst%") do (
call :prc %%S
for /f "Delims=" %%D in ('dir /b /s /on /ad %%S') do call :prc %%D
)
exit
:prc
set D=%1
set D=!D:%Src%=!
md %Dst%!D! 2>nul
move "%1\*.*" "%Dst%!D!\" 2>nul
if not %ErrorLevel%==0 echo "%1\*.*" =^> "%Dst%!D!\">>%~pdn0.err
exit /b
PS: ошибки отрабатываются только примерно, будет спотыкаться даже на пустых каталогах, см
*.ERR