比较两个文件夹,将不同文件夹的文件复制到另一个文件夹

时间:2016-07-17 20:35:43

标签: batch-file

所以,我正在玩这个游戏,我有一些测试人员在玩。由于游戏文件的大小,我想创建一个可以应用于游戏的先前版本的补丁,这样我的测试人员就可以“修补”#34;较旧的变种并获得新变种而无需重新下载整个游戏。要创建此补丁,请按以下步骤操作:

我们说我有3个文件夹。 Folder 1是游戏的旧版本,Folder 2是游戏的新版本,我将为其创建补丁,Folder 3是补丁文件的复制位置

我需要做的是让批处理脚本循环遍历Folder 2中的每个文件,并检查它是否存在于Folder 1中。如果文件在Folder 1中不存在,或者文件存在但具有不同的哈希值,则会将其从Folder 2复制到Folder 3。唯一的问题是我不知道如何比较文件以查看它们是否在批处理中是相同的。我想根据哈希值和大小来比较它们,而不是根据修改日期进行比较。

1 个答案:

答案 0 :(得分:2)

你可以从他的剧本开始:

@echo off
set "Folder1=Folder1"
set "Folder2=Folder2"
set "Folder3=Folder3"

for /f "delims=" %%F in ('dir /b "%folder2%"') do (
    if not exist "%folder1%\%%F" copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F"
    )
pause
Exit

编辑:

或使用 FC 命令与 /b 执行二进制比较

echo off
set "Folder1=path\to\Folder1"
set "Folder2=path\to\Folder2"
set "Folder3=path\to\Folder3"

for /f "delims=" %%F in ('dir /b "%folder2%"') do (
    if exist "%folder1%\%%F" (
        fc /b "%folder1%\%%F" "%folder2%\%%F"
        if "%errorlevel%" EQU "1" (
            copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F"
        )
    ) else (
        copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F"
    )
)
pause
Exit