中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何删除目录下的非rar文件?
« [1] [2] »
作者:
标题: 如何删除目录下的非rar文件? 上一主题 | 下一主题
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『楼 主』:  如何删除目录下的非rar文件?

目录下面有很多文件,包括rar文件,现在只想保留rar文件,其它都删除。

我知道如果删除rar文件的话用
for /r %a in (*.rar) do @del /s/q %a

就可以,但要保留rar而删除其它文件有没有好办法呢?

2007-12-5 15:14
查看资料  发短消息 网志   编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 2 楼』:  


@echo off
for /f "delims=/" %%i in ('dir /b/s *.*') do dir /b/s *.rar | find "%%i" || del "%%i"
[ Last edited by uemuem on 2007-12-5 at 06:53 PM ]



个人主页-找餐厅:http://www.canting.cc
2007-12-5 16:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 3 楼』:  

谢谢,回去学习!

2007-12-5 18:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by uemuem at 2007-12-5 04:26 PM:
for /f "delims=/" %%i in ('dir /b/s *.*') do dir /b/s *.rar | find "%%i" || del "%%i"
[ Last edited by uemuem on 2007-12-5 at 04:35 PM ]

我发现此方法虽然可行,但效率比较低!
因为dir命令在屏幕上显示内容会花时间,从dir命令输出的字符串来截取进行操作也是比较慢。

我曾经用的方法是为该目录下的所有文件去除隐藏属性
attrib +H *.* /S
然后再把rar文件增加隐藏属性
attrib -H *.rar /S
最后删掉带有隐藏属性的文件就可以了。
速度自然是快很多,特别是该目录下有很多rar文件,且不一定在根目录的时候,效率高不少。

但就想知道除了这个方法外,还有没有其它的方法能比较快速的解决这个问题的?

2007-12-5 18:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
uemuem
初级用户




积分 153
发帖 68
注册 2006-10-12
来自 上海
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by lvjing79 at 2007-12-5 18:50:


我发现此方法虽然可行,但效率比较低!
因为dir命令在屏幕上显示内容会花时间,从dir命令输出的字符串来截取进行操作也是比较慢。

我曾经用 ...

这是个好主意,不过文件量大的话估计效率也不会太高吧,不太具通用性。

[ Last edited by uemuem on 2007-12-5 at 07:13 PM ]



个人主页-找餐厅:http://www.canting.cc
2007-12-5 18:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 6 楼』:  

这也是我想请教还有没有更好的方法的原因。

2007-12-5 19:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by uemuem at 2007-12-5 04:26 PM:
@echo off
for /f "delims=/" %%i in ('dir /b/s *.*') do dir /b/s *.rar | find "%%i" || del "%%i"
[ Last edited by uemuem on 2007-12-5 at 06:53 PM ]

另外我想请教,delims=/ 是指分隔符是'/'吧?那'dir /b/s *.*' 出来的结果里面有'/'这个符号吗?好像都是'\'吧?

2007-12-5 19:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 8 楼』:  

分割符/是不显示,只显示/前面的内容

2007-12-5 19:53
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
abcd
银牌会员





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

@echo off
for /f "delims=" %%i in ('dir /a/b/s *.*') do if /i not "%%~xi"==".rar" del /a/q"%%i"

2007-12-5 20:26
查看资料  发短消息 网志  OICQ (470237592)  编辑帖子  回复  引用回复
lvjing79
初级用户





积分 36
发帖 15
注册 2007-11-23
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by abcd at 2007-12-5 08:26 PM:
@echo off
for /f "delims=" %%i in ('dir /a/b/s *.*') do if /i not "%%~xi"==".rar" del /a/q"%%i"

嗯,看来不错,回去试验一下,多谢!

2007-12-6 10:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dooomer
初级用户





积分 109
发帖 52
注册 2006-1-3
状态 离线
『第 11 楼』:  

生成一个文件夹,把rar文件拷入,然后把剩下来的文件全部删除,再把rar文件拷出来,把刚才生成的文件夹删除,这样子不就行了。

2007-12-8 10:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 12 楼』:  

不用 find  用IF怎么样



简单!简单!再简单!
2007-12-8 14:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yangzhiyi
中级用户





积分 261
发帖 123
注册 2006-6-6
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by dooomer at 2007-12-8 10:02:
生成一个文件夹,把rar文件拷入,然后把剩下来的文件全部删除,再把rar文件拷出来,把刚才生成的文件夹删除,这样子不就行了。

这个最实际,应该说 移入和移出,拷字应该是复制

2007-12-8 16:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 14 楼』:  

@echo off
for /r %%i in (*.*) do (
if not "%%i"==%0 if not "%%~xi"==".rar" del /a/f/q "%%i"
)
pause



简单!简单!再简单!
2007-12-8 16:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 15 楼』:  


::只删除 d:\test目录下非rar文件,不包括子目录
WMIC DATAFILE WHERE "Drive='d:' AND Extension<>'rar' and path='\\test\\'" call delete


2007-12-10 23:01
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: