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

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

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

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

本来想贴张截图的,但昨天刚注册好像有发帖限制。咱也不太懂批处理,哪位大佬能帮着指导指导,不胜感激
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

谨慎使用。
2

评分人数

bat小白,请多指教!谢谢!

TOP

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

回复 2# 77七


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

TOP

本帖最后由 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"
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 4# 77七


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

TOP

返回列表