中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-07 16:13
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]用批处理删除所有分区下的空文件夹 查看 1,398 回复 10
楼 主 [求助]用批处理删除所有分区下的空文件夹 发表于 2009-02-04 15:02 ·  中国 北京 鹏博士BGP
初级用户
积分 68
发帖 37
注册 2008-08-15 11:07
17年会员
UID 123237
性别 男
状态 离线
我自己想出的命令是

for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=3" get caption') do dir /ad/b/s "%%a\" | sort /r >>%temp%\dir.txt
for /f %%b in (%temp%\dir.txt) do rd %%b


用第一句命令是用于按顺序排列出所有分区下文件夹,用文本的方式放到临时目录的dir.txt中,第二句是用于删除的,因为rd命令不添加任何参数话只会删除空的目录,但是由于一些文件夹名称是带空格的,如(Documents and Settings,Program Files等),要用rd命令执行删除这些文件夹中的内容都必须添加上“""”引号,我的问题就是如何让列出的目录名全部添加上""号,删除调用rd "%%b"是不可以的,我试过。

[ Last edited by jy02116916 on 2009-2-4 at 15:04 ]
2 发表于 2009-02-04 15:23 ·  中国 江苏 扬州 电信
高级用户
★★★
积分 620
发帖 329
注册 2007-12-05 15:34
18年会员
UID 104754
性别 男
状态 离线
for /f "tokens=*" %%a in ('dir /b /ad /s "z:\"^|sort /r') do rd "%%a" 2>nul
删除z盘下所有空文件夹
3 发表于 2009-02-04 16:54 ·  中国 北京 鹏博士BGP
初级用户
积分 68
发帖 37
注册 2008-08-15 11:07
17年会员
UID 123237
性别 男
状态 离线
cad55的命令只能删除z盘下的空文件夹 而且碰到带空格的文件夹名称就没有效果了

我的问题主要是想问在运行for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=3" get caption') do dir /ad/b/s "%%a\" | sort /r >>%temp%\dir.txt命令后,如何在dit.txt中每一行中首尾添加""

[ Last edited by jy02116916 on 2009-2-4 at 16:59 ]
4 发表于 2009-02-04 18:15 ·  中国 广东 广州 移动
初级用户
积分 70
发帖 36
注册 2008-05-21 22:48
18年会员
UID 119349
性别 男
状态 离线
这个,放到WORD里编辑一下,用 "^p" 替换所有 ^p
然后在第一行前加个 ",删除最后一行的"
5 Re 4楼 发表于 2009-02-04 18:51 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
这里是批处理版,不是WORD版,应该首先考虑批处理吧^_^
6 发表于 2009-02-04 21:23 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
::这样可以直接删除了,如果要存到 %temp%\dir.txt
::把 rd "%%~fi"改成:echo."%%~fi">>%temp%\dir.txt

@echo off
for /f "skip=1 delims=" %%a in ('wmic logicaldisk where "drivetype=3" get caption') do (for /f "delims=" %%i in ('dir /ad/b/s "%%a"') do rd "%%~fi")
精简
=> 个人网志
7 发表于 2009-02-05 02:49 ·  中国 广西 南宁 电信
新手上路
积分 1
发帖 1
注册 2008-10-09 01:44
17年会员
UID 127843
性别 男
状态 离线
长见识了
8 发表于 2009-02-05 11:13 ·  中国 北京 鹏博士BGP
初级用户
积分 68
发帖 37
注册 2008-08-15 11:07
17年会员
UID 123237
性别 男
状态 离线
谢谢netbenton提供的方法 不过你的命令可能有些问题 运行后提示找不到文件 我把我的命令改成这样就可以了。for命令嵌套的话问题还是挺多的。


@echo off
for /f "skip=1" %%a in ('wmic logicaldisk where "drivetype=3" get caption') do dir /ad/b/s "%%a\" | sort /r >>%temp%\dir.txt
for /f "delims=" %%i in (%temp%\dir.txt) do rd "%%~fi" 2>nul
del %temp%\dir.txt >nul


[ Last edited by jy02116916 on 2009-2-5 at 11:31 ]
9 发表于 2009-02-05 16:54 ·  中国 黑龙江 大庆 联通
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
如何判断空文件夹呢?是通过
sort /r
命令吗?我在CMD下 sort /?没有看到 /r的具体解释,能给解释一下吗?
10 知道了! 发表于 2009-02-05 16:59 ·  中国 黑龙江 大庆 联通
高级用户
★★
积分 547
发帖 261
注册 2006-04-15 16:50
20年会员
UID 53887
状态 离线
哈哈,我只看八楼代码!不清楚sort /r什么意思,竟然忽略了rd只能删除空目录,不好意思!
11 ^_^ 发表于 2009-02-05 20:55 ·  中国 广东 东莞 电信
银牌会员
★★★
批处理编程迷
积分 1,916
发帖 752
注册 2008-12-28 04:30
17年会员
UID 135147
性别 男
来自 广西
状态 离线
正如楼上说的,rd只删除空目录,虽然提示出错,但是结果是对的,如果你不想看到错误提示,可以在后面加>nul
精简
=> 个人网志
论坛跳转: