批处理 - 根据文件的时间戳复制文件

时间:2014-08-24 23:18:12

标签: batch-file timestamp backup

我有两个目录(带子目录),A和B. B是A的旧副本,因此可能存在:

1)A中的文件,但不是B

2)B中的文件,但不是A

3)A中的文件使用较新的“上次修改”时间戳

我想通过将它们复制到另一个目录C

来识别所有这些

我已经尝试循环遍历A中的所有文件并调用另一批来比较时间戳,但我无法在B中找到相应的文件。

感谢您的帮助。

编辑:换句话说:“B”是我的“A”备份。现在我想在“C”

中创建差异备份

2 个答案:

答案 0 :(得分:0)

是否可以使用rsync?

rsync -azvrc <source> <destination>

答案 1 :(得分:0)

这将使用xcopy /l检索A中与B不同的文件列表。然后将每个文件复制到C中的已充实文件夹

初始pushd允许使用xcopy命令返回表单中的相对路径

.\file.ext
.\folder\file.ext

delims=.删除了初始点,第二个for连接了C文件夹路径和检索到的文件路径,以确定最终目标。

@echo off

    setlocal enableextensions disabledelayedexpansion

    set "folderA=%cd%"
    set "folderB=c:\temp"
    set "folderC=c:\temp2"

    pushd "%folderA%"
    for /f "tokens=* delims=." %%a in ('xcopy . "%folderB%" /dehyil ^| find ".\"') do for %%b in ("%folderC%%%a") do (
        echo %%b 
        if not exist "%%~dpb" mkdir "%%~dpb" >nul 
        copy /y ".%%a" "%%~dpb" >nul
    )
    popd