3

Как вы знаете, обработчик копирования окон по умолчанию переименовывает новые файлы, если вы выберете "держать оба файла". Какую программу я могу использовать для переименования старых файлов? или лучше поместить все старые файлы в папку для резервных копий в одном месте, каждый со своей структурой пути?

2 ответа2

2

Этот сценарий помещает все дубликаты файлов из %DestinationFolder% в каталог резервного копирования с именем $Backup_%date%_%time% в корне %DestinationFolder% , с префиксом переменной %prefix% , которая по умолчанию равна $Backup_ . Вы можете настроить это значение.

@echo off
set Folder=
set DestinationFolder=
set prefix=$Backup_
set suffix=%date%_%time%
set suffix=%suffix:/=-%
set suffix=%suffix::=-%
cd /d "%Folder%"
for /R %%a in (.) do (
    set PTH=%%a
    call :DUP
)
xcopy /herkvy "%Folder%" "%DestinationFolder%" 1>nul 2>&1
goto :eof

:DUP
set PTH=%PTH:\.=%
call set PTH=%%PTH:%Folder%=%%
type nul>"%tmp%\FileList"
for /f "tokens=4,* delims= " %%b in ('dir /a "%Folder%%PTH%" ^| find "/" ^| find /i /v "<DIR>"') do (
    echo %%c>>"%tmp%\FileList"
)
for /f "tokens=4,* delims= " %%d in ('dir /a "%DestinationFolder%%PTH%" ^| find "/" ^| find /i /v "<DIR>"') do (
    find /i "%%e" "%tmp%\FileList" 1>nul 2>&1 && (
         if not exist "%DestinationFolder%\%prefix%%suffix%%PTH%" md "%DestinationFolder%\%prefix%%suffix%%PTH%"
         move "%DestinationFolder%%PTH%\%%e" "%DestinationFolder%\%prefix%%suffix%%PTH%\%%e" 1>nul 2>&1
    )
)
exit /b

Примечание: Пожалуйста , установите Folder на путь папки , которую требуется для резервного копирования, и DestinationFolder на путь назначения папки (резервного) Без Baclslash At The End! Пример:

Правильный:

set Folder=C:\project\files
set DestinationFolder=D:\Data\backup

Неправильно:

set Folder=C:\project\files\
set DestinationFolder=D:\Data\backup\
2

rsync --backup будет делать то, что вы хотите. Вы можете указать суффикс для старых файлов, используя --suffix , или переместить старые файлы в другую папку, используя --backup-dir .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .