我有2个文件夹结构,其中有许多子目录,其中只有.ofr文件。两者都具有相同的布局和子目录名称,具有相同数量的文件和文件名,但压缩方式不同。文件夹1中的某些文件将较小,其他文件大于文件夹2中的文件。
我希望能够有一个批处理文件来扫描每个文件,并将最小的文件移动到最大的文件,以实现只包含每个文件的最小版本的文件夹。
在许多情况下,大小差异只是字节数,但总体上是3gb,它会产生一些差异。
示例文件夹1是SOUNDS_MC,文件夹2是SOUNDS_MCX。
答案 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硬链接(使用谷歌)。