Board logo

标题: [原创]批量删除QQ生成的号码文件夹(实用哦!!!!) [打印本页]

作者: lzmuhioin     时间: 2008-5-6 13:10    标题: [原创]批量删除QQ生成的号码文件夹(实用哦!!!!)

相信大家在家里面使用QQ的时候,有时候在一台电脑上面所使用的号码太多的话,删起来还是比较麻烦的!我就经常遇到,呵呵,为了方便就写了一个批处理代码,实现批量删除QQ目录里面曾经使用过QQ的号码生成的目录,这样既保护了QQ生成文件的私密,又删除了垃圾文件, 同时还希望版主不吝赐教,好待我日加完善,满足更多的朋友使用
@echo off
setlocal enabledelayedexpansion
for /l %%i in (2,1,9) do (
     dir *%%i*. /b>ReferCacheNametoDelete
     for /f "tokens=* delims=" %%a in (ReferCacheNametoDelete) do ( 
         rd "%%a" /s /q
     )
)
del ReferCacheNametoDelete /f /q

作者: BWSkyer     时间: 2008-5-6 13:35
至今不知道 setlocal enabledelayedexpansion 有什么用處~~ 還有你如何判斷哪些是用過的QQ呢? 看你的循環沒有看明白..

作者: itrui     时间: 2008-5-6 14:01
1.变量延迟也没用上啊 2.何必生成临时文件呢, in (set) 不是更简洁 3."tokens=* delims=" 都实现一样的功能,用一个就好了吧 4.另外还有很多其他包含数字的文件,你这样肯定会误删。

作者: lzmuhioin     时间: 2008-5-6 14:13
这是个人使用上的一种习惯了。。。至于如何判断的 我也不知道使用dir *1*. /b就不能显示出所有带1文件夹,所以就在2到9之间开始循环*%%i*当然是为了取完2至9中间的所有数字,那么至于 dir *%%i*. 那就是显示所以中间部位是数字的文件夹. 那么rd %%a /s /q 就是第从dir中获得名单从而删其及其子文件夹

作者: itrui     时间: 2008-5-6 14:19
dir *%%i*. 那就是显示所以中间部位是数字的文件夹 这句话你再好好研究研究吧

作者: lzmuhioin     时间: 2008-5-6 14:24
谢谢itrui的建议 我查看的QQ的目录其中还有3DShow 和flashshow2这两个目录,那个加两个判断就成了
@echo off
setlocal enabledelayedexpansion
for /l %%i in (2,1,9) do (
     dir *%%i*. /b
     dir *%%i*. /b>CacheName
     for /f "tokens=* delims=" %%a in (CacheName) do ( 
         if /i not "%%a" == "3DShow" (
             if /i not "%%a" == "flashshow2" (
                       rd "%%a" /s /q
             )
         )
     )
)
del CacheName /f /q

作者: lzmuhioin     时间: 2008-5-6 14:28
Originally posted by itrui at 2008-5-6 02:19 PM: dir *%%i*. 那就是显示所以中间部位是数字的文件夹 这句话你再好好研究研究吧
看来是我解释有误,意思为只要其文件名中只要含有数字就有算是条件合格这样,就会把3DShow和flashshow2排除掉就行了

作者: itrui     时间: 2008-5-6 14:29
Originally posted by lzmuhioin at 2008-5-6 02:24 PM: 谢谢itrui的建议 我查看的QQ的目录其中还有3DShow 和flashshow2这两个目录,那个加两个判断就成了 @echo off setlocal enabledelayedexpansion for /l %%i in (2,1 ...
在我电脑里带数字的可不只这两个文件夹,你看这样写会不会更简单点。
@echo off
for /f "delims=" %%a in ('dir /ad /b^|findstr "^[0-9]*$"') do (echo %%a)
pause

作者: huahua0919     时间: 2008-5-6 14:38
"^[0-9]*" 上面这个会列出所有文件夹的 "^[0-9][0-9]*"

作者: itrui     时间: 2008-5-6 14:47
Originally posted by huahua0919 at 2008-5-6 02:38 PM: "^[0-9]*" 上面这个会列出所有文件夹的 "^[0-9][0-9]*"
呵呵,你冤枉我啊,我是那么写的吗?

作者: huahua0919     时间: 2008-5-6 14:52
按照你那写法,所有显示的只是单个数字的文件夹

作者: joyn     时间: 2008-5-6 14:54
好多符号我不明白用法

作者: huahua0919     时间: 2008-5-6 15:00
其实这样就行了 findstr "[0-9]" or findstr "[0123456789]" 就会显示所有有数字命名的文件夹 [ Last edited by huahua0919 on 2008-5-6 at 03:01 PM ]

作者: itrui     时间: 2008-5-6 15:07
Originally posted by huahua0919 at 2008-5-6 02:52 PM: 按照你那写法,所有显示的只是单个数字的文件夹
你搞错了吧,我这么写是显示纯数字组合的文件夹,并非单个数字。 findstr "[0-9]" or findstr "[0123456789]",你这种写法,如果包括数字字母混合也会列出来。 [ Last edited by itrui on 2008-5-6 at 03:14 PM ]

作者: clian76     时间: 2008-9-14 15:33
我是一句都没看懂,太菜了

作者: everest79     时间: 2008-9-15 14:49
dir /ad /b|findstr "^[0-9]*$" ^ 行位置: 行的开始 [class] 字符类别: 任何在字符集中的字符 * 重复: 以前字符或类别出现零或零以上次数 $ 行位置: 行的终点 8l是正确的

作者: 23112656     时间: 2008-9-15 17:04
我只是搞不懂 * 重复: 以前字符或类别出现零或零以上次数 这个意思是为什么?

作者: HAT     时间: 2008-9-15 17:15
*是统配符 1*表示1出现零次或零次以上