@echo off
setlocal
set "source_folder=C:\path\to\source\folder"
set "destination_folder=%~dp0"
for /R "%source_folder%" %%F in (*) do (
set "file_path=%%~F"
setlocal enabledelayedexpansion
set "new_name=!file_path:%source_folder%=!"
set "new_name=!new_name:\=_!"
set "new_name=!new_name:~1!"
if "%%~aF"=="d" (
mkdir "%destination_folder%!new_name!"
) else (
copy "%%F" "%destination_folder%!new_name!"
)
endlocal
)
endlocal