的Windows批处理文件来查找硬盘重复大小的文件(不管名称和扩展名)

问题描述:

我想一个批处理文件(Windows CMD的解释,一个.bat)的形式做这种类型的任务:的Windows批处理文件来查找硬盘重复大小的文件(不管名称和扩展名)

1)通过一个文件夹及其子文件夹(整个硬盘)

2)查找具有相同的尺寸(不管文件名和扩展名)

3个文件搜索)显示这些文件(或不)

谢谢你的帮助! :)

编辑:

用下面的命令,我可以知道文件有各种大小...

@echo off 
set "filename=*.*" 
for %%A in (%filename%) do echo.Size of "%%A" is %%~zA bytes 

但现在的大问题是,你需要比较第一,余下的等等!

+1

你试过了吗? – SachaDee

+0

是的,我做了,但作为msdos我不太明白,我试图寻找谷歌的东西,但没有找到,我在这里尝试一些帮助! – songa

+1

我不明白为什么有些人认为这个问题“太宽泛”,当请求被完美定义,并且已经有一个十行解决方案可以准确地提供请求的结果... **:('** – Aacini

下面的批处理文件应该可以解决您的问题;然而,请注意,尽管其显而易见的简洁性,它基于高级概念,如批处理文件中的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 
) 

如果文件数量很大或者如果起始文件夹有长路径,则此程序可能会花费太多时间。

+0

非常感谢你Aacini,我测试了这个脚本,它效果很好......如果你允许,我会调整它,以便我可以识别两个相同的文件。它只显示两个(或更多)中的一个。现在我有一个你给我的参考资料,我可以单独给你剩下的东西!非常感谢你。 – songa

+0

不好意思Aacini,但是我的名声不让我为你的文章加油! :( – songa

+0

我测试了代码,并且在这里正常工作。请注意,具有相同大小的文件的名称由一个逗号分隔,可能会被忽略...尝试以更明显的方式分隔名称;例如: 'set'size [%%〜Za] =!size [%%〜Za]!,“%%〜Fa”“' – Aacini