В этом ответе StackOverflow публикует пакетный файл Windows для копирования и хранения дубликатов, в котором содержится предложенный сценарий с двумя аргументами: SourcePath TargetPath. Он рекурсивно копирует все файлы из SourcePath и его подпапок в TargetPath, игнорируя файлы из целевой папки и добавляя увеличивающийся счетчик к базовому имени для дубликатов..bat
::copyFlat sourcePath TargetPath @echo off setlocal disableDelayedExpansion :: Initialize and validate arguments if "%~2" equ "" echo Error: Insufficient arguments>&2&exit /b 1 set "source=%~f1" if not exist "%source%\" echo Error: Source folder "%source%" does not exist>&2&exit /b 1 set "target=%~f2" if exist "%target%\" echo Error: Target folder "%target%" already exists>&2&exit /b 1 :: Do the work md "%target%" set /a n=0 for /r "%source%" %%F in (*) do if "%%~dpF" neq "%target%\" ( if exist "%target%\%%~nxF" ( set /a n+=1 set "full=%%F" set "name=%%~nF" set "ext=%%~xF" setlocal enableDelayedExpansion copy "!full!" "!target!\!name!_!n!!ext!" >nul endlocal ) else copy "%%F" "%target%" >nul )