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

[文件操作] 批处理如何快速查找并删除大批量文件?

[复制链接]
发表于 2014-10-27 14:55:44 | 显示全部楼层 |阅读模式
现在有个文件夹,每个文件夹中有上万个子文件夹,每个子文件夹中又有上万张图片,其中有些大小为190字节的是空白图需要删除。
我用了网上找的代码并做了改动,刚开始运行速度还比较快,到后来越来越慢,要重新运行才行。运行了整整3天才删了三分之一。
请问各位大神有什么办法可以快速查找并删除文件吗?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a sum=0
  4. echo.
  5. echo.
  6. echo 删除当前所在目录及其子目录下所有大小为190字节的png文件(即空白图)
  7. echo.
  8. echo       当前工作目录为: %cd%
  9. echo.
  10. echo                                                   按任意键   开始删除空白图
  11. pause>nul
  12. echo -----------------------------------------------------------------------------

  13. for /r %%1 in (*.png) do if %%~z1 equ 190 del %%~1&&echo 成功删除空白图:%%1&&set /a sum=sum+1
  14. )

  15. )
  16. echo -----------------------------------------------------------------------------
  17. echo      共删除%cd%目录下 空白图个数:%sum%
  18. echo.
  19. echo.
  20. echo    按任意键退出
  21. pause>nul
  22. set sum=
  23. exit
复制代码
发表于 2014-10-27 15:34:46 | 显示全部楼层
  1. @echo off
  2. echo 删除当前所在目录及其子目录下所有大小为190字节的png文件(即空白图)
  3. echo 当前工作目录为: %cd%
  4. echo 按任意键   开始删除空白图
  5. pause>nul
  6. for /d %%i in (*) do (
  7.     echo 处理文件夹 %%i -----------------------------------------------------------------------------
  8.     pushd "%%i"
  9.     for %%j in (*.png) do if %%~zj equ 12 del /f /q "%%j"
  10.     popd
  11. )
  12. pause
复制代码
这样效果如何?
 楼主| 发表于 2014-10-27 16:06:39 | 显示全部楼层
回复 2# DAIC


多谢大神!!!快了很多,之前处理一个文件夹需要二三十秒,现在只需几秒了。
另外还想再问下,我之前代码运行慢的原因是什么,因为每次都求和了?还是因为打印得太多了?能否多个文件夹一起并行处理以加快速度?
 楼主| 发表于 2014-10-27 16:13:35 | 显示全部楼层
回复 2# DAIC


    另外,如果文件夹有多层呢?代码应该怎么写比较好?
发表于 2014-10-27 16:33:44 | 显示全部楼层
回复 4# 627988244


    把你原来那个代码里面 sum 计数的功能去掉看看能提高多少
 楼主| 发表于 2014-10-27 16:49:06 | 显示全部楼层
回复 5# DAIC


    去掉了sum感觉差不多。
发表于 2014-10-27 18:01:42 | 显示全部楼层
回复 4# 627988244
  1. @echo off
  2. echo 删除当前所在目录及其子目录下所有大小为190字节的png文件(即空白图)
  3. echo 当前工作目录为: %cd%
  4. echo 按任意键   开始删除空白图
  5. pause>nul
  6. for /d %%i in (*) do (
  7.     echo 处理文件夹 %%i -----------------------------------------------------------------------------
  8.     pushd "%%i"
  9.     for /r %%j in (*.png) do if %%~zj equ 190 del /f /q "%%j"
  10.     popd
  11. )
  12. pause
复制代码
 楼主| 发表于 2014-10-27 19:19:46 | 显示全部楼层
回复 7# DAIC


    /r 放在09行吗?我觉得应该在06行吧。因为我是想遍历bat文件所在的目录下的所有文件。
发表于 2014-10-27 20:25:34 | 显示全部楼层
回复 8# 627988244


    你的想法错了,测试一下代码就到有没有错误啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 20:51 , Processed in 0.026859 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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