中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]用批处理删除所有分区下的空文件夹
作者:
标题: [求助]用批处理删除所有分区下的空文件夹 上一主题 | 下一主题
jy02116916
初级用户





积分 68
发帖 37
注册 2008-8-15
状态 离线
『楼 主』:  [求助]用批处理删除所有分区下的空文件夹

我自己想出的命令是
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 ]

2009-2-4 15:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
cad55
高级用户





积分 620
发帖 329
注册 2007-12-5
状态 离线
『第 2 楼』:  

for /f "tokens=*" %%a in ('dir /b /ad /s "z:\"^|sort /r') do rd "%%a" 2>nul
删除z盘下所有空文件夹

2009-2-4 15:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jy02116916
初级用户





积分 68
发帖 37
注册 2008-8-15
状态 离线
『第 3 楼』:  

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 ]

2009-2-4 16:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
andison625
初级用户





积分 70
发帖 36
注册 2008-5-21
状态 离线
『第 4 楼』:  

这个,放到WORD里编辑一下,用  "^p" 替换所有 ^p
然后在第一行前加个 ",删除最后一行的"

2009-2-4 18:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  Re 4楼

这里是批处理版,不是WORD版,应该首先考虑批处理吧^_^



2009-2-4 18:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 6 楼』:  

::这样可以直接删除了,如果要存到 %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")



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-4 21:23
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
lhm6686
新手上路





积分 1
发帖 1
注册 2008-10-9
状态 离线
『第 7 楼』:  

长见识了

2009-2-5 02:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jy02116916
初级用户





积分 68
发帖 37
注册 2008-8-15
状态 离线
『第 8 楼』:  

谢谢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 ]

2009-2-5 11:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 9 楼』:  

如何判断空文件夹呢?是通过
sort  /r
命令吗?我在CMD下 sort /?没有看到  /r的具体解释,能给解释一下吗?

2009-2-5 16:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 10 楼』:  知道了!

哈哈,我只看八楼代码!不清楚sort /r什么意思,竟然忽略了rd只能删除空目录,不好意思!

2009-2-5 16:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 11 楼』:  ^_^

正如楼上说的,rd只删除空目录,虽然提示出错,但是结果是对的,如果你不想看到错误提示,可以在后面加>nul



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-5 20:55
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: