批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

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

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

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

例如 D:\A 有如下文件


1.txt
2.rar
3.csv

D:\B  有如下文件
5.txt
6.rar
7.csv

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

51bf1e054d8cc1bc3892f32dafe0be1b      1.txt
af7163231d9984801e2044cdea500e66      2.rar
5bea77aae1d3ab745c51a3a8a12f429a      3.csv
这个命令只需执行一次
获取md5到>a.md5.txt, 因为下面脚本会用追加方式把新的md5数据存储进来



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

51bf1e054d8cc1bc3892f32dafe0be1b    5.txt
34ryty6u43r3r3dt5y6j324kf5tgd3edd     6.rar
24k2k43424lk5242342m342f534d4as    7.csv


然后和 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,这样可以省很多时间

a.md5.txt
51bf1e054d8cc1bc3892f32dafe0be1b        1.txt
af7163231d9984801e2044cdea500e66      2.rar
5bea77aae1d3ab745c51a3a8a12f429a       3.csv
34ryty6u43r3r3dt5y6j324kf5tgd3edd         6.rar
24k2k43424lk5242342m342f534d4as        7.csv


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

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

Thanks

本帖最后由 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. }
复制代码

TOP

本帖最后由 娜美 于 2021-11-24 23:51 编辑

回复 2# idwma


idwma哥  这么快就来了   嗯嗯 刚大概测了一下, 看起来非常好  Thanks Thanks idwma哥

TOP

本帖最后由 娜美 于 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. }
复制代码

TOP

回复 4# 娜美
  1. dir D:\A\* -include *.rar,*.txt,*.zip,*.7z,*.csv
复制代码

TOP

回复 5# idwma



idwma 哥    加了 include后     非常帅了 Thank you

TOP

本帖最后由 娜美 于 2021-11-25 19:15 编辑

idwma大哥哥   觉得你写的powershell语言风格好帅哦  都是一句话完成,  没有半句多余的  并没有出现加长版   真是超级帅

TOP

返回列表