Board logo

标题: 如何删除目录下的非rar文件? [打印本页]

作者: lvjing79     时间: 2007-12-5 15:14    标题: 如何删除目录下的非rar文件?

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

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

就可以,但要保留rar而删除其它文件有没有好办法呢?
作者: uemuem     时间: 2007-12-5 16:26

@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 ]
作者: lvjing79     时间: 2007-12-5 18:17
谢谢,回去学习!
作者: lvjing79     时间: 2007-12-5 18:50


  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文件,且不一定在根目录的时候,效率高不少。

但就想知道除了这个方法外,还有没有其它的方法能比较快速的解决这个问题的?
作者: uemuem     时间: 2007-12-5 18:52


  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 ]
作者: lvjing79     时间: 2007-12-5 19:27
这也是我想请教还有没有更好的方法的原因。
作者: lvjing79     时间: 2007-12-5 19:30


  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 *.*' 出来的结果里面有'/'这个符号吗?好像都是'\'吧?
作者: huahua0919     时间: 2007-12-5 19:53
分割符/是不显示,只显示/前面的内容
作者: abcd     时间: 2007-12-5 20:26
@echo off
for /f "delims=" %%i in ('dir /a/b/s *.*') do if /i not "%%~xi"==".rar" del /a/q"%%i"
作者: lvjing79     时间: 2007-12-6 10:39


  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"

嗯,看来不错,回去试验一下,多谢!
作者: dooomer     时间: 2007-12-8 10:02
生成一个文件夹,把rar文件拷入,然后把剩下来的文件全部删除,再把rar文件拷出来,把刚才生成的文件夹删除,这样子不就行了。
作者: terse     时间: 2007-12-8 14:34
不用 find  用IF怎么样
作者: yangzhiyi     时间: 2007-12-8 16:10


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

这个最实际,应该说 移入和移出,拷字应该是复制
作者: terse     时间: 2007-12-8 16:28
@echo off
for /r %%i in (*.*) do (
if not "%%i"==%0 if not "%%~xi"==".rar" del /a/f/q "%%i"
)
pause
作者: vkill     时间: 2007-12-10 23:01

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

作者: yadn1985     时间: 2007-12-11 10:55
::这个怎么用??
望请赐教