中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 自动判断文件夹是否为空。是空文件夹则删除!
« [1] [2] »
作者:
标题: 自动判断文件夹是否为空。是空文件夹则删除! 上一主题 | 下一主题
eckert
初级用户





积分 41
发帖 14
注册 2006-9-30
状态 离线
『楼 主』:  自动判断文件夹是否为空。是空文件夹则删除!

自动判断文件夹是否为空。是空文件夹则删除!

for /l %%a in (1,1,3) do for/r %%i in (.) do rd %%~si

帮我看看这个有没有什么错误。。

可以用在LJ 文件清理里面么?

2008-2-22 00:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lotus516
高级用户

论坛上抢劫的


积分 551
发帖 246
注册 2006-9-21
状态 离线
『第 2 楼』:  

for /f "tokens=*" %%a in ('dir /b /ad /s "l:\"^|sort /r') do rd "%%a" 2>nul

2008-2-23 00:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cad55
高级用户





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



  Quote:
Originally posted by lotus516 at 2008-2-23 12:53 AM:
for /f "tokens=*" %%a in ('dir /b /ad /s "l:\"^|sort /r') do rd "%%a" 2>nul

高手呀....

再请问一下..

怎样搜索删除.0字节的所有类型的文件.

2008-2-23 09:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 4 楼』:  

的确厉害
学习了
致敬
0字节的所有类型的文件
用FOR中的%%~z扩展文件大小
%%~zi=0就是0字节i



路 是自己选的
学习 是为了具备解决问题的能力
2008-2-23 11:33
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子  回复  引用回复
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 5 楼』:  

请问
for /f "tokens=*" %%a in ('dir /b /ad /s "l:\"^|sort /r') do rd "%%a" 2>nul

           "l:\"
这个是什么意思啊?
这里我不懂,能指点一下吗?
十分感谢



路 是自己选的
学习 是为了具备解决问题的能力
2008-2-23 11:40
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子  回复  引用回复
cad55
高级用户





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



  Quote:
Originally posted by zyz0304360 at 2008-2-23 11:40 AM:
请问
for /f "tokens=*" %%a in ('dir /b /ad /s "l:\"^|sort /r') do rd "%%a" 2>nul

           "l:\"
这个是什么意思啊?
这里我不懂, ...


是要删文件夹的当前盘符.......


哪个0字节..你再说说.....

没有听懂..........

2008-2-23 12:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 7 楼』:  

就是利用rd命令的特性,在删除0字节文件夹时不会提示出错

2008-2-23 13:01
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 8 楼』:  

@echo off
for /f "tokens=*" %%i in ('dir /b *.* ^|sort /r') do if %%~zi==0 del /f /q "%%~ni.*"
pause

[ Last edited by zyz0304360 on 2008-2-23 at 01:18 PM ]



路 是自己选的
学习 是为了具备解决问题的能力
2008-2-23 13:05
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子  回复  引用回复
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by cad55 at 2008-2-23 12:16 PM:




是要删文件夹的当前盘符.......


哪个0字节..你再说说.....

没有听懂..........

是要删文件夹的当前盘符.......

我执行
dir /b /ad /s "|:\"
就会报错
找不到指定路径啊

比如有这样一个文件
C:aa\aa\aa
盘符是怎么删的?
这样?
C:aa\aa\aa |:\

我是菜鸟,目前只懂这个
set a=C:aa\aa\aa
set a=%a:\=%

上面的不懂还请指点,谢谢了



路 是自己选的
学习 是为了具备解决问题的能力
2008-2-23 13:26
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子  回复  引用回复
duansuo
新手上路





积分 4
发帖 2
注册 2008-2-2
状态 离线
『第 10 楼』:  

有没有人能完整的解释下啊,还是有点不懂啊
   
                                                    谢谢拉!

2008-2-23 15:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by zyz0304360 at 2008-2-23 01:26 PM:



是要删文件夹的当前盘符.......

我执行
dir /b /ad /s "|:\"
就会报错
找不到指定路径啊

比如有这样一个文件
C:aa\aa\aa
盘符是怎么删的 ...

把"|:\"
去掉就表示当前盘符

把"|:\"替换为自己的路径即可

2008-2-23 16:50
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
cad55
高级用户





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



  Quote:
Originally posted by duansuo at 2008-2-23 03:07 PM:
有没有人能完整的解释下啊,还是有点不懂啊
   
                                                    谢谢拉!

比如:你要删C盘下.空文件夹:
for /f "tokens=*" %%a in ('dir /b /ad /s "c:\"^|sort /r') do rd "%%a" 2>nul



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

[ Last edited by cad55 on 2008-2-23 at 05:14 PM ]

2008-2-23 17:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Nickey
初级用户




积分 132
发帖 59
注册 2007-8-23
来自 GuangZhou
状态 离线
『第 13 楼』:  

为什么将2#的
for /f "tokens=*" %%a in ('dir /b /ad /s "E:\"^|sort /r') do rd "%%a" 2>nul
改为:
for /f "tokens=*" %%a in ('dir /b /ad /s "E:\"^|sort /r') do echo "%%a">>空文件夹菜单.txt
写入记事本的却是所有文件夹呢?



I could be the one
http://kanlis.7ta.cn
2008-2-23 17:15
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (375600651)  编辑帖子  回复  引用回复
abcd
银牌会员





积分 1436
发帖 739
注册 2007-10-11
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by Nickey at 2008-2-23 05:15 PM:
为什么将2#的
for /f "tokens=*" %%a in ('dir /b /ad /s "E:\"^|sort /r') do rd "%%a" 2>nul
改为:
[code]for /f "tokens=*" %%a in ( ...

'dir /b /ad /s "E:\"^|sort /r'

是会列出所有文件夹的,至于为什么只删除空的文件夹而不删除非空文件夹

就是利用rd命令的特性,在删除空文件夹时不提示

在未加/Q参数时,rd命令在删除非空文件夹时,会提示出错信息的。

2008-2-23 17:18
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
zyz0304360
中级用户




积分 257
发帖 123
注册 2008-1-5
来自 烟台
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by Nickey at 2008-2-23 05:15 PM:
为什么将2#的
for /f "tokens=*" %%a in ('dir /b /ad /s "E:\"^|sort /r') do rd "%%a" 2>nul
改为:
[code]for /f "tokens=*" %%a in ( ...

'dir /b /ad /s "E:\"^|sort /r'
此命令用于列出所有E盘下及其子目录(/s)的文件夹名(/ad)
/ad指定了打印文件夹名
然后把文件夹名赋值给%%a
2>nul
的意思是把rd "%%a"命令执行时出现的错误命令写入空设备(就是不需要反馈了)
改成 echo "%%a" >>aaa.txt
当然就是把删除空文件时的系统反馈写入aaa.txt
因为%%a就是文件夹名

[ Last edited by zyz0304360 on 2008-2-23 at 06:07 PM ]



路 是自己选的
学习 是为了具备解决问题的能力
2008-2-23 18:06
查看资料  发短消息 网志  OICQ (625621812)  编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: