标题: [文件操作] 批处理如何实现不同文件夹md5比较后追加和删除? [打印本页]
作者: 娜美 时间: 2021-11-24 09:55 标题: 批处理如何实现不同文件夹md5比较后追加和删除?
本帖最后由 娜美 于 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
作者: idwma 时间: 2021-11-24 20:34
本帖最后由 idwma 于 2021-11-24 22:14 编辑
- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- dir D:\A|%{
- $c=[IO.File]::OpenRead($_.fullname)
- $d+=@([BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")+" "+"$_.name")
- $c.Close()
- }
- out-file -input $d -enc default a.md5.txt
复制代码
- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- $a=type a.md5.txt
- dir D:\B|%{
- $c=[IO.File]::OpenRead($_.fullname)
- $b=[BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")
- $c.Close()
- if($a -match $b){del $_.fullname}else{out-file -input "$b $_.name" -enc default a.md5.txt -append}
- }
复制代码
作者: 娜美 时间: 2021-11-24 23:28
本帖最后由 娜美 于 2021-11-24 23:51 编辑
回复 2# idwma
idwma哥 这么快就来了 嗯嗯 刚大概测了一下, 看起来非常好 Thanks Thanks idwma哥哥
作者: 娜美 时间: 2021-11-25 08:25
本帖最后由 娜美 于 2021-11-25 08:57 编辑
回复 2# idwma
idwma哥 我偿试这样加入多种后缀,
idwma哥哥 可以挑选加入多种文件后缀吗
- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- dir D:\A\*.rar,*.txt,*.zip,*.7z,*.csv|%{
- $c=[IO.File]::OpenRead($_.fullname)
- $d+=@([BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")+"
-
- "+"$_.name")
- $c.Close()
- }
- out-file -input $d -enc default a.md5.txt
复制代码
- #@&cls&powershell "type %~s0|out-string|iex"&pause&exit
- $a=type a.md5.txt
- dir D:\A\*.rar,*.txt,*.zip,*.7z,*.csv|%{
- $c=[IO.File]::OpenRead($_.fullname)
- $b=[BitConverter]::ToString([Security.Cryptography.MD5]::Create().ComputeHash($c)).Replace("-","")
- $c.Close()
- if($a -match $b){del $_.fullname}else{out-file -input "$b $_.name" -enc default a.md5.txt -append}
- }
复制代码
作者: idwma 时间: 2021-11-25 17:09
回复 4# 娜美 - dir D:\A\* -include *.rar,*.txt,*.zip,*.7z,*.csv
复制代码
作者: 娜美 时间: 2021-11-25 18:57
回复 5# idwma
idwma 哥 加了 include后 非常帅了 Thank you
作者: 娜美 时间: 2021-11-25 19:13
本帖最后由 娜美 于 2021-11-25 19:15 编辑
idwma大哥哥 觉得你写的powershell语言风格好帅哦 都是一句话完成, 没有半句多余的 并没有出现加长版 真是超级帅
作者: dyhq2021 时间: 2022-1-19 08:59
回复 2# idwma
作者: dyhq2021 时间: 2022-1-19 09:07
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
请按任意键继续. . .
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |