Board logo

标题: [文件操作] 【已解决】批处理怎么删除指定目录以外的所有目录? [打印本页]

作者: e20b1c222f0f    时间: 2024-4-23 21:47     标题: 【已解决】批处理怎么删除指定目录以外的所有目录?

我想实现的功能是:删除指定目录以外的所有目录。

具体例子,就是我在当前目录有四个目录(分别是:A, B, C, D), 在目录D下有另有三个目录(分别是:AAA, BBB, CCC)。我想实现的是:删掉除了目录D和目录BBB、目录CCC之外的所有目录。

本来想贴张截图的,但昨天刚注册好像有发帖限制。咱也不太懂批处理,哪位大佬能帮着指导指导,不胜感激
作者: 77七    时间: 2024-4-23 22:14

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. pause
  4. cd /d "%~dp0"
  5. set _"BBB"=1
  6. set _"CCC"=1
  7. for /d %%d in (*) do (
  8. if /i "%%d" neq "D" (
  9. rd /s /q "%%d"
  10. ) else (
  11. for /d %%e in ("%%d\*") do (
  12. if not defined _"%%~nxe" (
  13. rd /s /q "%%e"
  14. )
  15. )
  16. )
  17. )
  18. pause
复制代码

谨慎使用。
作者: e20b1c222f0f    时间: 2024-4-23 22:23

本帖最后由 e20b1c222f0f 于 2024-4-23 22:25 编辑

回复 2# 77七


非常感谢您,很完美的解决了我的提问
借此机会,想再请教您一下。我实际工作中,要删除的目录很多,其中会有重名的目录,怎么根据路径来定义变量呢?
作者: 77七    时间: 2024-4-24 00:39

本帖最后由 77七 于 2024-4-24 00:51 编辑

回复 3# e20b1c222f0f


   没想到好办法,使用了临时文件,代码指定了路径为 d:\ ,谨慎使用
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "d:\"
  4. for /f "delims=" %%a in ('more +17 "%~f0"') do (
  5. if exist "%%~a" (
  6. cd.>"%%~a\$#.$#"
  7. for /f "delims=" %%d in ('2^>nul dir /b /s /ad "%%~a"') do (
  8. cd.>"%%d\$#.$#"
  9. )
  10. )
  11. )
  12. (for /f "delims=" %%d in ('dir /b /s /ad ^|sort /r') do (
  13. dir /b /s /a-d "%%d" |find "$#.$#" 1>nul || rd /s /q "%%d"
  14. )) 2>nul
  15. del /s /q "$#.$#" 1>nul
  16. pause & exit
  17. rem 以下存放需要保留的目录
  18. "D:\d\bbb"
  19. "D:\d\ccc"
复制代码

作者: e20b1c222f0f    时间: 2024-4-24 10:48

回复 4# 77七


    好嘞好嘞,这么晚还在回我的帖子。无以言表,太感谢您了




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