Windows 用于查找硬盘中重复大小文件的批处理文件(无论名称和扩展名)
Windows batch file to find duplicates size files in harddisk (no matter the name and the extension)
我想要一个批处理文件(Windows CMD 是解释器,一个 .bat )来完成此类任务:
1) 搜索文件夹及其子文件夹(整个硬盘)
2) 查找相同大小的文件(无论文件名和扩展名)
3) 显示这些文件(或不显示)
感谢您提供的任何帮助! :)
编辑:
通过以下命令,我可以知道文件的所有大小...
@echo off
set "filename=*.*"
for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes
但现在最大的问题是你需要比较第一个,然后再比较余数等等!
下面的批处理文件应该可以解决您的问题;但是,请注意,尽管它看起来很简单,但它是基于高级概念的,例如批处理文件中的 array management。
@echo off
setlocal EnableDelayedExpansion
rem Group all file names by size
for /R %%a in (*.*) do (
set "size[%%~Za]=!size[%%~Za]!,%%~Fa"
)
rem Show groups that have more than one element
for /F "tokens=2,3* delims=[]=," %%a in ('set size[') do (
if "%%c" neq "" echo [%%a]: %%b,%%c
)
如果文件数量很大或起始文件夹的路径很长,此程序可能会花费太多时间。
我想要一个批处理文件(Windows CMD 是解释器,一个 .bat )来完成此类任务:
1) 搜索文件夹及其子文件夹(整个硬盘)
2) 查找相同大小的文件(无论文件名和扩展名)
3) 显示这些文件(或不显示)
感谢您提供的任何帮助! :)
编辑:
通过以下命令,我可以知道文件的所有大小...
@echo off
set "filename=*.*"
for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes
但现在最大的问题是你需要比较第一个,然后再比较余数等等!
下面的批处理文件应该可以解决您的问题;但是,请注意,尽管它看起来很简单,但它是基于高级概念的,例如批处理文件中的 array management。
@echo off
setlocal EnableDelayedExpansion
rem Group all file names by size
for /R %%a in (*.*) do (
set "size[%%~Za]=!size[%%~Za]!,%%~Fa"
)
rem Show groups that have more than one element
for /F "tokens=2,3* delims=[]=," %%a in ('set size[') do (
if "%%c" neq "" echo [%%a]: %%b,%%c
)
如果文件数量很大或起始文件夹的路径很长,此程序可能会花费太多时间。