[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

现在有个文件夹,每个文件夹中有上万个子文件夹,每个子文件夹中又有上万张图片,其中有些大小为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
复制代码

  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
复制代码
这样效果如何?

TOP

回复 2# DAIC


多谢大神!!!快了很多,之前处理一个文件夹需要二三十秒,现在只需几秒了。
另外还想再问下,我之前代码运行慢的原因是什么,因为每次都求和了?还是因为打印得太多了?能否多个文件夹一起并行处理以加快速度?

TOP

回复 2# DAIC


    另外,如果文件夹有多层呢?代码应该怎么写比较好?

TOP

回复 4# 627988244


    把你原来那个代码里面 sum 计数的功能去掉看看能提高多少

TOP

回复 5# DAIC


    去掉了sum感觉差不多。

TOP

回复 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
复制代码

TOP

回复 7# DAIC


    /r 放在09行吗?我觉得应该在06行吧。因为我是想遍历bat文件所在的目录下的所有文件。

TOP

回复 8# 627988244


    你的想法错了,测试一下代码就到有没有错误啦。

TOP

返回列表