Windows:如果没有重复

时间:2015-11-19 18:13:53

标签: batch-file cmd

一个月前,我使用robocopy将d:\ source备份到f:\ backup1:

robocopy d:\source\ f:\backup1\ /zb /XJ /COPY:DAT /e /v /R:1 /W:1 

现在我想创建一个d:\ source的新备份f:\ backup2,并只复制f:\ backup1中不存在的文件或者它们已被更改(f:\中没有重复)备份服务器1)。

如何使用cmd.exe执行此操作?

1 个答案:

答案 0 :(得分:2)

首先在列表模式下运行robocopy("干运行"),使用第一个备份文件夹构建更新/新文件列表,然后手动复制该列表中的文件一个一个人:

setlocal enableDelayedExpansion

set "source=d:\source"
set "backup1=f:\backup1"
set "backup2=f:\backup2"

for /f "tokens=*" %%a in ('
    robocopy "%source%" "%backup1%" /s /e /njh /njs /nc /ns /ndl /l
') do (
    echo %%a
    set "file=%%a"
    set "dir=%%~dpa"
    md "!dir:%source%=%backup2%!" 2>nul
    copy /y /b "%%a" "!file:%source%=%backup2%!" >nul
)

N.B。此简化代码不会使用!

处理文件名