Board logo

标题: [文件操作] [已解决]删除文件命令DEL/S/Q/F和RD/S/Q哪个效率高? [打印本页]

作者: semiuel    时间: 2023-12-8 20:20     标题: [已解决]删除文件命令DEL/S/Q/F和RD/S/Q哪个效率高?

今天下午维修一台电脑(i3-10100/8G/500G/WIN10)的时候碰到一个棘手问题。
新装的电脑(2023.08买的)WIN10系统在显示欢迎登陆界面需要转圈15分钟才能进桌面。
排查后发现%TEMP%目录里面临时文件超级多。
考虑到电脑安装了用友财务软件,不能重装系统,只能删临时文件。
WIN+R运行%TEMP%后打开资源管理器窗口,光是显示所有文件花了20分钟左右,显示有351万项目(不包含子目录里的文件),
CTRL+A全选又花了20多分钟,尝试SHIFT+DEL失败,电脑直接无响应。
重启后突然想到电脑安装了火绒,用工具里面的垃圾清理花了一个多小时把大部分临时文件删掉了。
然后又用DEL/S/Q/F删了一遍,发现这个命令不能删除子目录,又用RD/S/Q删了一遍,才总算把这个目录清空(有几个系统占用文件删不了)。

晚上回到家搜了一下有关这两个命令的信息,
DEL/S/Q/F只能删文件,不能删子目录。
RD/S/Q可以删文件,也可以删子目录。
如果下午我直接用RD/S/Q,不知道会不会快一点。

不知道论坛里的大佬们有没有比较过这两个命令的效率。
作者: czjt1234    时间: 2023-12-8 20:40

除了不能删除子文件夹,速度差不多,估计差个零点零零几秒吧
作者: semiuel    时间: 2023-12-8 20:43

DOS命令跟WINDOWS里操作删除比呢?
作者: semiuel    时间: 2023-12-8 20:45

以下午我维修的电脑为例,包含子目录里的文件应该是超过500万个文件的,不知道哪个会更快。
作者: czjt1234    时间: 2023-12-8 20:50

windows慢多了,他是读取统计所有文件,再删除
命令行是直接删除
作者: semiuel    时间: 2023-12-8 21:25

清空临时文件目录后欢迎登陆界面只需要等2秒钟就可以进桌面了。
作者: 77七    时间: 2023-12-9 11:48

  1. @echo off
  2. md a b
  3. for /l %%l in (1,1,30000) do (
  4. cd.>a\%%l.x
  5. cd.>b\%%l.x
  6. )
  7. pause
  8. echo %time%
  9. del /s /q /f a\*.x 1>nul 2>nul
  10. echo %time%
  11. pause
  12. echo %time%
  13. rd /s /q b
  14. echo %time%
  15. pause
复制代码

作者: locoman    时间: 2023-12-9 17:57

我觉得:你既然是维修,最好是采用U盘PE启动绕过硬盘OS启动,就能很快进入系统,再用CMD命令del /s /q /f 和 rd /s /q 应该能很快删除硬盘的%TEMP%里面的文件了。
作者: Five66    时间: 2023-12-10 00:26

感觉 DEL/S/Q/F 快点
作者: semiuel    时间: 2023-12-10 16:56

借鉴了一部分代码,测试这两个命令删除文件的速度。
  1. @echo off
  2. setlocal
  3. set /p num=测试用文件数:
  4. echo 正在创建测试用的文件
  5. set start=%time%
  6. md a b
  7. for /l %%l in (1,1,%num%) do (
  8. cd.>a\%%l.x
  9. cd.>b\%%l.x
  10. )
  11. call :timer
  12. echo 正在用del /s/q/f命令删除文件
  13. set start=%time%
  14. del /s /q /f a\*.x 1>nul 2>nul
  15. call :timer
  16. echo 正在用rd /s/q命令删除文件
  17. set start=%time%
  18. rd /s /q b
  19. call :timer
  20. pause
  21. rd a >nul
  22. :timer
  23. set end=%time%
  24. set options="tokens=1-4 delims=:.,"
  25. for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a
  26. start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
  27. for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a
  28. end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
  29. set /a hours=%end_h%-%start_h%
  30. set /a mins=%end_m%-%start_m%
  31. set /a secs=%end_s%-%start_s%
  32. set /a ms=%end_ms%-%start_ms%
  33. if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
  34. if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
  35. if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
  36. if %hours% lss 0 set /a hours = 24%hours%
  37. if 1%ms% lss 100 set ms=0%ms%
  38. set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
  39. echo 耗时:%hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%秒)
复制代码

作者: semiuel    时间: 2023-12-10 17:02

电脑配置有点老,先试了一下10万文件

测试用文件数:100000
正在创建测试用的文件
耗时:0:1:45.44 (105.44秒)
正在用del /s/q/f命令删除文件
耗时:0:0:32.32 (32.32秒)
正在用rd /s/q命令删除文件
耗时:0:0:30.22 (30.22秒)
请按任意键继续. . .
作者: ShowCode    时间: 2023-12-10 19:06

回复 11# semiuel


我的电脑上测试10万个文件:
del /s /q /f 耗时 16.71 秒
rd /s /q 耗时 13.22 秒
作者: semiuel    时间: 2023-12-10 19:09

回复 12# ShowCode


    这么快啊!我换了家里电脑测试也是rd/s/q更快。
作者: semiuel    时间: 2023-12-11 08:22

文件数量达到1000万后反而DEL/S/Q/F快了。

测试用文件数:10000000
正在创建测试用的文件
耗时:02:19:55.77 (8395.77秒)
正在用del /s/q/f命令删除文件
耗时:00:58:10.98 (3490.98秒)
正在用rd /s/q命令删除文件
耗时:01:04:04.35 (3844.35秒)
请按任意键继续. . .
作者: hnfeng    时间: 2023-12-11 08:43

删除大量文件和文件夹,使用 RD /Q /S 干脆,连根拔起
作者: _avatar_    时间: 2023-12-12 00:43

回复 5# czjt1234


    如果是右键删除, windows 的确是要慢一些,因为是要把文件移动到回收站,这个并非真的删除,只是移动和修改名称,当然就会慢很多。
    而如果是 shift + del 直接删除,那效率其实是差不多的
作者: semiuel    时间: 2023-12-12 10:24

回复 16# _avatar_


    一个目录下面有几百万个文件的时候,打开文件管理器显示这些文件需要几十分钟,CTRL+A全选这些文件需要几十分钟,SHIFT+DEL按键按下到跳出删除文件进度条的小窗口又要几十分钟,然后才是漫长的删除过程。
作者: newswan    时间: 2024-1-15 23:35

进 pe 用diskgen 可能快一些




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