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

[文本处理] 【已解决】批处理命令 dir 区分大小写吗?

[复制链接]
发表于 2024-9-1 20:49:29 | 显示全部楼层
回复 12# lovekix

如果被删除的目标目录包含所有被删除的目标文件,则14楼代码可删除第2行;若非也,则可调换2,3行序,确实可提高整体删除效率...
发表于 2024-9-1 21:00:06 | 显示全部楼层
  1. @echo off
  2. cd /d c:\
  3. for /f "delims=" %%i in ('dir /a /b /s ^|findstr /ig:"config.ini"') do (
  4.         if exist "%%i" (
  5.                 echo rd /s /q "%%i"
  6.         ) else if exist "%%i" (
  7.                 echo del /a /f "%%i"
  8.         )
  9. )
  10. pause
复制代码
发表于 2024-9-1 21:48:38 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-2 09:19 编辑


充分利用 rd 和 del 的容错性,还可进一步简化操作及检测步骤...

  1. @echo off & for /f "delims=" %%c in (config.ini) do (for /f "delims=" %%a in ('dir /b/s "*%%c*" ') do (
  2.      rd /s/q "%%a"
  3.      del /f/q "%%a"
  4. )) 2>nul
  5. pause&exit/b
复制代码
发表于 2024-9-2 10:40:01 | 显示全部楼层
有10个框,每个筐装10个球,需要找出并扔掉压破的、压瘪的球和框,两种办法:
办法1:
1.从第1个框(目录)开始,找出框中压破了的球(文件),扔掉;直到10个框的球都找遍;
2.重复第1步,找出框中压瘪了的球(文件),扔掉;直到10个框的球都找遍;
3.从第1个框(目录)开始,找到压破了的框,扔掉;直到10个框都找遍;
4.重复第3步,找出压瘪了的框,扔掉;直到所有框都找遍。

办法2:
1.从第1个框(目录)开始,找到破框或瘪框,扔掉,直到10个框都找遍;
2.从第1个框(目录)开始,找到破球或瘪球(文件),扔掉,直到所有球都找遍。

只要有正常逻辑思维的人,一般会选择办法2;
也有人偏不信邪,非办法1不选,其思维、逻辑总是超乎常人,bat新手老手一个比一个懵逼;
我一般不愿把人往坏处想,就当这是为了彰显其独特的个性与魅力吧。
发表于 2024-9-2 10:53:01 | 显示全部楼层
生动!!!!!!!
 楼主| 发表于 2024-9-3 06:52:11 | 显示全部楼层
本帖最后由 lovekix 于 2024-9-3 10:30 编辑

回复 15# WHY


   

PE不支持  sort


我提取了一个 sort   都删除完了    很完美
https://wwrj.lanzouw.com/iD7v4290xbpg



用时1分25秒
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%i in (config.ini) do (
  4.     set key=!key! "*%%i*"
  5. )
  6. endlocal & set key=%key%

  7. for /f "delims=" %%i in ('dir /b /ad /s %key% ^| sort /r') do (
  8.     rd /s /q "%%i"
  9. )
  10. del /s /a /f /q %key%
  11. pause
复制代码
 楼主| 发表于 2024-9-3 06:58:05 | 显示全部楼层
本帖最后由 lovekix 于 2024-9-3 07:00 编辑

回复 17# 77七


    10秒就搞定了

但是删的不全  文件夹删除了  文件还保留

 楼主| 发表于 2024-9-3 07:53:31 | 显示全部楼层
回复 18# aloha20200628


    用时3分40秒
发表于 2024-9-3 08:46:47 | 显示全部楼层
回复 22# lovekix


   看了你的反馈,未删除的文件 都位于 "C:\Windows" 下
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /a /b /s "c:" "C:\Windows" ^|findstr /ig:"config.ini"') do (
  4.         if exist "%%i" (
  5.                 echo rd /s /q "%%i"
  6.         ) else if exist "%%i" (
  7.                 echo del /a /f "%%i"
  8.         )
  9. )
  10. pause
复制代码
 楼主| 发表于 2024-9-3 08:54:24 | 显示全部楼层
回复 24# 77七


    效果一样  还是只删除了 文件夹
发表于 2024-9-3 09:00:05 | 显示全部楼层
回复 25# lovekix


   其它目录下的文件删除了吗?有没有报错信息?
 楼主| 发表于 2024-9-3 09:23:27 | 显示全部楼层
回复 26# 77七


    没有删除  其他目录
没有报错
发表于 2024-9-3 12:31:18 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-3 12:34 编辑

回复 23# lovekix

分两步也许可提速》先 rd 完成 ‘大量的集团’ 清理,其后 del 再完成 ‘少量剩余的单兵’ 清理,二者没有重复操作,订正代码如下...

  1. @echo off
  2. for /f "delims=" %%c in (config.ini) do (for /f "delims=" %%a in ('dir /b/s "*%%c*" ') do rd /s/q "%%a") 2>nul
  3. for /f "delims=" %%c in (config.ini) do (for /f "delims=" %%a in ('dir /b/s "*%%c*" ') do del /f/q "%%a") 2>nul
  4. pause&exit/b
复制代码
发表于 2024-9-3 14:42:43 | 显示全部楼层
本帖最后由 77七 于 2024-9-3 14:52 编辑

回复 27# lovekix


   
这样试下,如果还是不行,检查 list_all.txt 及 list_del.txt 是否包含未删除的文件。
  1. @echo off
  2. cd /d "%~dp0"
  3. set keys=config.ini

  4. (for /f "useback" %%a in ("%keys%") do (
  5.         echo %%a
  6. )) > "list_keys.txt"
  7. dir /a /b /s "c:" "c:\windows" > "list_all.txt"
  8. findstr /ig:"list_keys.txt" "list_all.txt" > "list_del.txt"
  9. for /f "useback delims=" %%i in ("list_del.txt") do (
  10.         if exist "%%i" (
  11.                 rd /s /q "%%i"
  12.         ) else if exist "%%i" (
  13.                 del /a /f "%%i"
  14.         )
  15. )
  16. rem del list_*.txt
  17. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 00:47 , Processed in 0.021598 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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