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

2 identical folders, file names the same but different file size. I want smallest version only

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

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

在很多情况下,大小差异只是字节数的问题,但总体而言为 3gb,这会有一些差异。

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

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

@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(使用 google)使用 NTFS 硬链接。