Как вы знаете, обработчик копирования окон по умолчанию переименовывает новые файлы, если вы выберете "держать оба файла". Какую программу я могу использовать для переименования старых файлов? или лучше поместить все старые файлы в папку для резервных копий в одном месте, каждый со своей структурой пути?
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\
rsync --backup
будет делать то, что вы хотите. Вы можете указать суффикс для старых файлов, используя --suffix
, или переместить старые файлы в другую папку, используя --backup-dir
.