2个相同的文件夹,文件名相同但文件大小不同。我只想要最小的版本

时间:2016-08-28 17:10:01

标签: batch-file recursion size

我有2个文件夹结构,其中有许多子目录,其中只有.ofr文件。两者都具有相同的布局和子目录名称,具有相同数量的文件和文件名,但压缩方式不同。文件夹1中的某些文件将较小,其他文件大于文件夹2中的文件。

我希望能够有一个批处理文件来扫描每个文件,并将最小的文件移动到最大的文件,以实现只包含每个文件的最小版本的文件夹。

在许多情况下,大小差异只是字节数,但总体上是3gb,它会产生一些差异。

示例文件夹1是SOUNDS_MC,文件夹2是SOUNDS_MCX。

1 个答案:

答案 0 :(得分:1)

这是一个简单的批处理文件,适用于名称中没有!的文件名。

@echo off
set "FOLDER1=c:\SOUNDS_MC"
set "FOLDER2=d:\SOUNDS_MCX"
setlocal enableDelayedExpansion

for /r "%FOLDER1%" %%a in (*) do (
    set "otherFile=%%a" & set "otherFile=!otherFile:%FOLDER1%=%FOLDER2%!"
    for %%b in ("!otherFile!*") do if "%%~nxb" == "%%~nxa" (
        if %%~zb GTR %%~za copy/b "%%a" "%%b" >nul & echo A-^>B: "%%a"
        if %%~zb LSS %%~za copy/b "%%b" "%%a" >nul & echo B-^>A: "%%b"
    )
)
pause & exit

如果两个文件夹位于同一个驱动器上,您可以通过fsutil使用NTFS硬链接(使用谷歌)。