标题: [文件操作] 【已解决】批处理怎么删除指定目录以外的所有目录? [打印本页]
作者: e20b1c222f0f 时间: 2024-4-23 21:47 标题: 【已解决】批处理怎么删除指定目录以外的所有目录?
我想实现的功能是:删除指定目录以外的所有目录。
具体例子,就是我在当前目录有四个目录(分别是:A, B, C, D), 在目录D下有另有三个目录(分别是:AAA, BBB, CCC)。我想实现的是:删掉除了目录D和目录BBB、目录CCC之外的所有目录。
本来想贴张截图的,但昨天刚注册好像有发帖限制。咱也不太懂批处理,哪位大佬能帮着指导指导,不胜感激
作者: 77七 时间: 2024-4-23 22:14
- @echo off
- rem 批处理保存为ansi编码格式
- pause
- cd /d "%~dp0"
- set _"BBB"=1
- set _"CCC"=1
- for /d %%d in (*) do (
- if /i "%%d" neq "D" (
- rd /s /q "%%d"
- ) else (
- for /d %%e in ("%%d\*") do (
- if not defined _"%%~nxe" (
- rd /s /q "%%e"
- )
- )
- )
- )
- 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:\ ,谨慎使用- @echo off
- rem 批处理保存为ansi编码格式
- cd /d "d:\"
- for /f "delims=" %%a in ('more +17 "%~f0"') do (
- if exist "%%~a" (
- cd.>"%%~a\$#.$#"
- for /f "delims=" %%d in ('2^>nul dir /b /s /ad "%%~a"') do (
- cd.>"%%d\$#.$#"
- )
- )
- )
- (for /f "delims=" %%d in ('dir /b /s /ad ^|sort /r') do (
- dir /b /s /a-d "%%d" |find "$#.$#" 1>nul || rd /s /q "%%d"
- )) 2>nul
- del /s /q "$#.$#" 1>nul
- pause & exit
- rem 以下存放需要保留的目录
- "D:\d\bbb"
- "D:\d\ccc"
复制代码
作者: e20b1c222f0f 时间: 2024-4-24 10:48
回复 4# 77七
好嘞好嘞,这么晚还在回我的帖子。无以言表,太感谢您了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |