中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-06 22:11
48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何删除目录下的非rar文件?
可打印版本  1,857 / 15
第1楼 lvjing79 发表于 2007-12-05 15:14
初级用户 发帖 15 积分 36
如何删除目录下的非rar文件?
目录下面有很多文件,包括rar文件,现在只想保留rar文件,其它都删除。

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

就可以,但要保留rar而删除其它文件有没有好办法呢?
第2楼 uemuem 发表于 2007-12-05 16:26
初级用户 发帖 68 积分 153 来自 上海


[ Last edited by uemuem on 2007-12-5 at 06:53 PM ]
第3楼 lvjing79 发表于 2007-12-05 18:17
初级用户 发帖 15 积分 36
谢谢,回去学习!
第4楼 lvjing79 发表于 2007-12-05 18:50
初级用户 发帖 15 积分 36
Originally posted by uemuem at 2007-12-5 04:26 PM:


[ Last edited by uemuem on 2007-12-5 at 04:35 PM ]


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

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

但就想知道除了这个方法外,还有没有其它的方法能比较快速的解决这个问题的?
第5楼 uemuem 发表于 2007-12-05 18:52
初级用户 发帖 68 积分 153 来自 上海
Originally posted by lvjing79 at 2007-12-5 18:50:


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

我曾经用 ...


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

[ Last edited by uemuem on 2007-12-5 at 07:13 PM ]
第6楼 lvjing79 发表于 2007-12-05 19:27
初级用户 发帖 15 积分 36
这也是我想请教还有没有更好的方法的原因。
第7楼 lvjing79 发表于 2007-12-05 19:30
初级用户 发帖 15 积分 36
Originally posted by uemuem at 2007-12-5 04:26 PM:


[ Last edited by uemuem on 2007-12-5 at 06:53 PM ]


另外我想请教,delims=/ 是指分隔符是'/'吧?那'dir /b/s *.*' 出来的结果里面有'/'这个符号吗?好像都是'\'吧?
第8楼 huahua0919 发表于 2007-12-05 19:53
银牌会员 发帖 780 积分 1,608
分割符/是不显示,只显示/前面的内容
第9楼 abcd 发表于 2007-12-05 20:26
银牌会员 发帖 739 积分 1,436
@echo off
for /f "delims=" %%i in ('dir /a/b/s *.*') do if /i not "%%~xi"==".rar" del /a/q"%%i"
第10楼 lvjing79 发表于 2007-12-06 10:39
初级用户 发帖 15 积分 36
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"


嗯,看来不错,回去试验一下,多谢!
第11楼 dooomer 发表于 2007-12-08 10:02
初级用户 发帖 52 积分 109
生成一个文件夹,把rar文件拷入,然后把剩下来的文件全部删除,再把rar文件拷出来,把刚才生成的文件夹删除,这样子不就行了。
第12楼 terse 发表于 2007-12-08 14:34
银牌会员 发帖 946 积分 2,404
不用 find 用IF怎么样
第13楼 yangzhiyi 发表于 2007-12-08 16:10
中级用户 发帖 123 积分 261
Originally posted by dooomer at 2007-12-8 10:02:
生成一个文件夹,把rar文件拷入,然后把剩下来的文件全部删除,再把rar文件拷出来,把刚才生成的文件夹删除,这样子不就行了。


这个最实际,应该说 移入和移出,拷字应该是复制
第14楼 terse 发表于 2007-12-08 16:28
银牌会员 发帖 946 积分 2,404
@echo off
for /r %%i in (*.*) do (
if not "%%i"==%0 if not "%%~xi"==".rar" del /a/f/q "%%i"
)
pause
第15楼 vkill 发表于 2007-12-10 23:01
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023