Board logo

标题: [文件操作] 求助批处理如何删除30分钟内大小一样的文件? [打印本页]

作者: dongfangzizhi    时间: 2021-11-22 17:21     标题: 求助批处理如何删除30分钟内大小一样的文件?

有一个比较奇葩的需求,请各位大佬赐教!

背景:有一个共享文件夹C:\pic,同事们会经常扔很多文件进来,主要是图片(JPG),但是会有大量重复的。

需求:希望弄一个批处理文件,每次运行时,把图片时间在此前30分钟内,且文件大小完全一致的(字节为单位),只保留第一个,后面的删除掉。

不用循环,我打算用任务计划循环运行。

感谢~~
作者: Batcher    时间: 2021-11-22 18:02

回复 1# dongfangzizhi


    这样做不太严禁吧,大小相等的两张图片很有可能是不同的内容。判断文件的MD5可能更不容易出错。
作者: idwma    时间: 2021-11-22 19:04

本帖最后由 idwma 于 2021-11-22 21:57 编辑
  1. powershell "dir 'C:\pic'|foreach{if(($_.lastwritetime-(get-date)).TotalMinutes -ge -30){if($a -notcontains $_.length){$a+=@($_.length)}else{del $_.fullname}}}"
复制代码

作者: dongfangzizhi    时间: 2021-11-23 11:24

回复 3# idwma
太棒了,完美运行!

再问个问题,就是我把这段代码另存为bat运行也OK。所以想问的是,powershell代码的运行方式有哪几种呢?除了PS1右键运行
作者: dongfangzizhi    时间: 2021-11-23 11:31

回复 3# idwma

再问下,这段代码没有对文件类型做规定对吧?如果要限定只处理jpg或mp4文件呢?
作者: dongfangzizhi    时间: 2021-11-23 11:32

回复 2# Batcher

是的,md5肯定更严谨。但是速度会慢不少吧,尤其是遇到GB级别的文件
作者: idwma    时间: 2021-11-23 15:41

回复 5# dongfangzizhi

运行方式有多少种不太清楚,用powershell.exe执行是为了兼容老系统
  1. powershell "dir C:\pic\* -inc *.iso,*.exe|foreach{if(($_.lastwritetime-(get-date)).TotalMinutes -ge -30){if($a -notcontains $_.length){$a+=@($_.length)}else{del $_.fullname}}}"
复制代码

作者: dongfangzizhi    时间: 2021-11-23 16:35

回复 7# idwma

再次完美运行,谢谢啦




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2