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

[文件操作] [已解决]批处理如何删除两个类型和大小都一样/相同的文件

[复制链接]
发表于 2015-1-15 13:16:42 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-24 12:06 编辑

  1. @ECHO OFF
  2. SETLOCAL ENABLEDELAYEDEXPANSION
  3. for /f "tokens=*" %%a in ('dir/a-d/b/oe') do set/a c+=1&set a!c!=%%a&set b!c!=%%~za&set c!c!=%%~xa
  4. for /l %%a in (1,1,%c%) do set/a d=%%a+1&for /l %%b in (!d!,1,%c%) do if not !b%%a!.==. call :1 %%a %%b
  5. goto :eof
  6. :1
  7. if !b%1!==!b%2! if !c%1!==!c%2! set b%2=&del "!a%2!"
  8. goto :eof
复制代码
怎样才能如果两个文件的类型和大小都一样,那两个都删除呢?
发表于 2015-1-15 16:03:17 | 显示全部楼层
类型和大小不太严谨吧,用md5如何?
发表于 2015-1-15 20:59:36 | 显示全部楼层
crc32 比 md5 更快更短,来一发:
  1. @echo off
  2. for /f "tokens=1*" %%a in ('hash /a::-d /crc32') do (
  3.    set file=%%b
  4.    if defined crc32[%%a] (
  5.       setlocal enabledelayedexpansion
  6.       del "!file!" "!crc32[%%a]!"
  7.       endlocal
  8.    )
  9.    set "crc32[%%a]=%%b"
  10. )
复制代码
hash.exe需单独下载:http://bbs.bathome.net/thread-30609-1-1.html
发表于 2015-1-15 21:23:10 | 显示全部楼层
如果按楼主要求以大小和修改时间为依据,powershell 很方便:
  1. dir | where{$_.PSIsContainer -eq $false} | group length,LastWriteTime | where{$_.count -gt 1} | select group | del
复制代码
发表于 2015-1-15 21:49:23 | 显示全部楼层
来个 bat+js:
  1. 1>1/* :
  2. @echo off
  3. dir /a-d | cscript -nologo -e:jscript "%~0"
  4. pause & exit /b */

  5. var map = {}
  6. var arr = WScript.StdIn.ReadAll().match(/^\d.+$/gm)

  7. for(var i=0;i<arr.length;i++){
  8.    var match = arr[i].match(/(.{35}) (.*)/)
  9.    map[match[1]] ? map[match[1]].push(match[2]) : map[match[1]]=[match[2]]
  10. }

  11. for(var i in map){
  12.    if(map[i].length>1)WScript.Echo(map[i].join('\r\n'))
  13. }
复制代码

评分

参与人数 1技术 +1 收起 理由
apang + 1 var map = {}

查看全部评分

 楼主| 发表于 2015-1-15 23:48:50 | 显示全部楼层
一个比一个厉害呀!谢谢DAIC,谢谢CrLf!JS也可以像bat和vbs一样用吗?
发表于 2015-1-16 01:17:55 | 显示全部楼层
回复 6# 小文


    忘了说,5 楼代码是要保存为 bat 运行的
    jscript 的宿主 wscript.exe 和 cscript.exe 支持以指定的语言来运行脚本,所以可以把某些不同语言的脚本写在同一个文件里
    js 支持多行注释,所以和 bat 混编有天然优势,vbs 虽然也可以,但很牵强
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 13:52 , Processed in 0.021853 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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