中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 删除某一文件夹里的一些数字名字的文件夹 解决了
作者:
标题: 删除某一文件夹里的一些数字名字的文件夹 解决了 上一主题 | 下一主题
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『楼 主』:  删除某一文件夹里的一些数字名字的文件夹 解决了

我想用批处理删除QQ目录下的用户文件夹怎么建批处理?
问题补充:主要删除的是像[119056547] [228469840] 这种文件夹,其它的QQ文件

另外文件夹内有如 "R2beat"的文件夹,也包含数字,为了避免删除.所以希望可以限制
如某文件夹名:少于 3种不同数字组合 就不删除。
像是这样 "R2beat" "R2beat1" "1R2beat3" "123"

[ Last edited by huzixuan on 2007-1-27 at 12:10 AM ]

2007-1-25 23:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 2 楼』:  


@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir/ad/b') do (
        set /a folder=%%i
        if not "!folder!"=="0" echo rd /s %%i
)
pause
演示代码,觉得没有问题,就把 echo 去掉。

============================================

修改了下:
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir/ad/b') do (
        set /a folder=0
        set /a folder=%%i 2>nul
        if not "!folder!"=="0" rd /s /q %%i
)
看楼主的意思是要删除QQ用户号码的目录,这段的作用是只删除数字组成的目录(0、00、000。。。这些目录除外)
试用时请先复制一份,以免因我代码有误而造成损失。

! 的意思是变量延迟,论坛有这方面详细介绍的资料,可以查阅下。

[ Last edited by NaturalJ0 on 2007-1-26 at 09:44 PM ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 huzixuan 分数: +1  时间:2007-1-27 00:32


2007-1-26 03:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wyd531
初级用户

菜鸟


积分 137
发帖 49
注册 2006-12-20
状态 离线
『第 3 楼』:  

"!folder!"=="0"
这句是什么意思,



我是一只小菜鸟,依呀依呀哟~~~
2007-1-26 04:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wyd531
初级用户

菜鸟


积分 137
发帖 49
注册 2006-12-20
状态 离线
『第 4 楼』:  

folder两边加上!有什么作用???????????



我是一只小菜鸟,依呀依呀哟~~~
2007-1-26 04:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『第 5 楼』:  

2楼的代码不去掉echo 也不会删除..rd /s /q 才可以...

2007-1-26 05:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 6 楼』:  

不对阿,2楼的帅哥你写不行

2007-1-26 08:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 7 楼』:  

像是这样 "R2beat" "R2beat1" "1R2beat3"
我想问一下,"123"是要删除的还是要保留的?

2007-1-26 08:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 8 楼』:  

是要删除的, 少于3个数字组合的就要删除

2007-1-26 21:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 9 楼』:  



  Quote:
如某文件夹名:少于 3种不同数字组合 就不删除。
像是这样 "R2beat" "R2beat1" "1R2beat3" "123"

  你这样的说法是非常摸棱两可或者自相矛盾的,请你把意思表达完整,把话说清楚。

  如果只是删除QQ目录下所有以数字命名的文件夹,可以使用如下代码:
@echo off
:: 放在QQ目录下运行,如果满意再去掉 echo
for /f %%i in ('dir /ad /b^|findstr "^[0-9]*$"') do echo rd /s /q %%i
pause


   此帖被 +2 点积分    点击查看详情   
评分人:【 huzixuan 分数: +2  时间:2007-1-27 00:32




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-26 22:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
pureobscure
新手上路





积分 10
发帖 5
注册 2007-1-26
状态 离线
『第 10 楼』:  

看来要学的还不少。初看题目只想到要用 for in do。 看完以上诸位发言才发现还有这么多变量可以设置。

不过说老实话,又看了遍楼住的帖子,没搞明白楼住到底要做什么。

2007-1-26 22:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 11 楼』:  

  NaturalJ0 兄在2楼的代码比较另类,充分利用了非数字不能用 set /a 来赋值的特点,在处理QQ用户文件夹的时候工作得很好。但是如果有一天,QQ的数字超过 2^31 的时候,会出错;或者要处理的不是QQ用户文件夹,而是处理纯数字命名的文件夹的话,会漏掉以08和09打头的文件夹,也不能处理以超过 2^31 的数字命名的文件夹^_^



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-26 23:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 12 楼』:  

还是 namejm 考虑的周道啊,你提的这些问题我还没想到过。 = =b
继续学习。

2007-1-26 23:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huzixuan
高级用户




积分 537
发帖 219
注册 2006-10-31
来自 芜湖
状态 离线
『第 13 楼』:  

阿哈哈
谢谢 namejm
斑竹
  你那个正是我想要的

2007-1-27 00:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: