找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21234|回复: 8

[文件操作] 批处理如何实现不同文件夹md5比较后追加和删除?

[复制链接]
发表于 2021-11-24 09:55:31 | 显示全部楼层 |阅读模式
本帖最后由 娜美 于 2022-1-16 08:57 编辑

不同文件夹md5比较   追加  和 删除
a b文件夹内的 txt  rar csv文件md5对比

a文件夹内大概有500个这样格式的文件
b文件夹大概有5个这样格式的文件
如果A文件夹内的文件md5和b内文件md5相同,则删除B文件夹的相同md5文件

例如 D:\A



考虑到后面有追加方案,  可能需要分开2种写
1.  先获取到a内文件夹内所有md5及文件名称以文本格式存放  格式如下
a.md5.txt



另一个BAT
2.  再获取b文件夹所有md5存放


然后和 a.md5.txt  b.md5.txt 文件进行MD5比较
如果它们第1列的md5和a.md5.txt的第1列相同,则删除b文件夹内仅md5相同文件
按照上面给出示例数据,会删除b文件夹下5.txt文件,因为它们第1列md5相同   



然后会将
b.md5.txt
里面最后2条新不相同md5追加到a.md5.txt去存放, 以备下次可以直接拿来对比,不用再一次获取a目录下md5,这样可以省很多时间


因为每天会从QQ下载新文件, 需要收集文件md5, 比较  删除

最终目的    删除相同md5文件   把不相同md5文件清单 追加到a.md5.txt去存放

Thanks
发表于 2021-11-24 20:34:00 | 显示全部楼层
本帖最后由 idwma 于 2021-11-24 22:14 编辑
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. dir D:\A|%{
  3. $c=[IO.File]::OpenRead($_.fullname)
  4. $d+=@([BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")+"    "+"$_.name")
  5. $c.Close()
  6. }
  7. out-file -input $d -enc default a.md5.txt
复制代码
  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. $a=type a.md5.txt
  3. dir D:\B|%{
  4. $c=[IO.File]::OpenRead($_.fullname)
  5. $b=[BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")
  6. $c.Close()
  7. if($a -match $b){del $_.fullname}else{out-file -input "$b    $_.name" -enc default a.md5.txt -append}
  8. }
复制代码
 楼主| 发表于 2021-11-24 23:28:20 | 显示全部楼层
本帖最后由 娜美 于 2021-11-24 23:51 编辑

回复 2# idwma


idwma哥  这么快就来了   嗯嗯 刚大概测了一下, 看起来非常好  Thanks Thanks idwma哥
 楼主| 发表于 2021-11-25 08:25:38 | 显示全部楼层
本帖最后由 娜美 于 2021-11-25 08:57 编辑

回复 2# idwma


   idwma哥  我偿试这样加入多种后缀,  


idwma哥哥    可以挑选加入多种文件后缀吗



  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. dir D:\A\*.rar,*.txt,*.zip,*.7z,*.csv|%{
  3. $c=[IO.File]::OpenRead($_.fullname)
  4. $d+=@([BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")+"   

  5. "+"$_.name")
  6. $c.Close()
  7. }
  8. out-file -input $d -enc default a.md5.txt
复制代码




  1. #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
  2. $a=type a.md5.txt
  3. dir D:\A\*.rar,*.txt,*.zip,*.7z,*.csv|%{
  4. $c=[IO.File]::OpenRead($_.fullname)
  5. $b=[BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")
  6. $c.Close()
  7. if($a -match $b){del $_.fullname}else{out-file -input "$b    $_.name" -enc default a.md5.txt -append}
  8. }
复制代码

发表于 2021-11-25 17:09:32 | 显示全部楼层
回复 4# 娜美
  1. dir D:\A\* -include *.rar,*.txt,*.zip,*.7z,*.csv
复制代码
 楼主| 发表于 2021-11-25 18:57:47 | 显示全部楼层
回复 5# idwma



idwma 哥    加了 include后     非常帅了 Thank you
 楼主| 发表于 2021-11-25 19:13:49 | 显示全部楼层
本帖最后由 娜美 于 2021-11-25 19:15 编辑

idwma大哥哥   觉得你写的powershell语言风格好帅哦  都是一句话完成,  没有半句多余的  并没有出现加长版   真是超级帅
发表于 2022-1-19 08:59:21 | 显示全部楼层
回复 2# idwma
发表于 2022-1-19 09:07:19 | 显示全部楼层
Invoke-Expression : 表达式或语句中出现意外标记“}”。
所在位置 行:1 字符: 29
+ type D:\a.bat|out-string|iex <<<<
    + CategoryInfo          : ParserError: (}:String) [Invoke-Expression], Par
   seException
    + FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.In
   vokeExpressionCommand

请按任意键继续. . .
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 16:49 , Processed in 0.021095 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表