【问题标题】:Windows batch file to find duplicates size files in harddisk (no matter the name and the extension)Windows批处理文件在硬盘中查找重复大小的文件(无论名称和扩展名)
【发布时间】:2015-06-27 19:53:02
【问题描述】:

我想要一个批处理文件(Windows CMD 是解释器,一个 .bat )来执行此类任务:

1) 搜索文件夹及其子文件夹(整个硬盘)

2) 查找大小相同的文件(无论文件名和扩展名)

3) 显示这些文件(或不显示)

感谢您的任何帮助! :)

编辑:

通过以下命令,我可以知道文件的所有大小...

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

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

【问题讨论】:

  • 你试过了吗?
  • 是的,我做了,但是作为msdos我不太明白,我尝试在google中寻找一些东西,但是没有找到,我在这里尝试一些帮助!
  • 我不明白为什么有些人认为这个问题“过于宽泛”,当请求被完美定义并且已经有一个十行的解决方案可以准确地给出所请求的结果...... :(
  • 别担心 Aacini... 重要的是您知道答案并且看到与不知道的人分享它的障碍... 直到看起来像一个简单的作业。我希望有一天我能为你做同样的事情! :)

标签: windows batch-file find duplicates size


【解决方案1】:

下面的批处理文件应该可以解决您的问题;但是,请注意,尽管它看起来很简单,但它基于高级概念,例如批处理文件中的 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
)

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

【讨论】:

  • 非常感谢 Aacini,我测试了脚本,它运行良好...如果您允许,我将对其进行调整,以便我可以识别两个相同的文件。它仅显示两者之一(或更多)。现在我有你给我的参考,剩下的我可以单独给出!非常感谢。
  • 对不起,Aacini,但我的名声不允许我为你的帖子增添趣味! :(
  • 我测试了代码并在这里正常工作。请注意,相同大小的文件的名称由一个逗号分隔,这可能会被忽视...尝试以更明显的方式分隔名称;例如:set "size[%%~Za]=!size[%%~Za]!, "%%~Fa""
  • ooppzzzzz,再次对不起...我没有注意到,但两个文件都以逗号分隔!我不需要改变任何东西! :)
猜你喜欢
  • 2013-07-13
  • 2012-06-17
  • 2014-06-16
  • 1970-01-01
  • 2019-10-18
  • 2013-08-03
  • 2010-09-13
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多