本帖高手应该飘过。
还在十分羡慕那个“30秒清理系统垃圾批处理”的神奇吗?被用在xp、vista上不在少数,是的,确实有点效果(在XP上,但vista上如何,下面再说),有何不合理,先看代码:
@echo off
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
echo 清除系统LJ完成!
echo. & pause
一直到第三行,有问题了。即 del /f /s /q %systemdrive%\*.log ,这行作用是 删除系统盘 下所有 log日志,本来应该没错,可是,有部分软件卸载信息是 .log文件保存的,而且假如当用户把这种软件安装到盘统盘下,这条命令一运行,卸载信息就没了,到时卸载软件就出问题了。删除日志命令只能改为 del /f /s /q %windir%\*.log ,即删除 windows 文件夹下(包括子文件夹)的日志,这样就不会影响到这种软件了,清除的都是系统产生的日志,除非有人傻得安装到windows目录。
这行 del /f /s /q %systemdrive%\recycled\*.* ,这个命令本是想删除回收站的东西,但这是不行的。大家把一个无用文件删除(非系统盘的无用文件,随机新建个)放到回收站,再在cmd下复制这行命令下去,回收站没被清空吧。原因是因为每个硬盘分区都有个回收站,在任一分区删除文件放进回收站,都是放进该分区的回收站,不然,删除文件到回收站的速度哪会这么快。这条命令只删除了系统盘下回收站文件,显然是不足的,解决方法是用 for 循环将每个分区进行操作。
这行 rd /s /q %windir%\temp & md %windir%\temp ,rd命令是删除文件夹,md命令是新建文件夹,个人认为把东西弄得麻烦了,直接 del /f /s /q %windir%\temp 效果一样嘛。这行命令网上有部分人有异议,认为windows下的temp有些文件是不能删除的,这个本人不敢确定,但我一直是删除的,因为这是临时文件夹。
最后到这四行,犯统一错误,所以一起说。
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /q %userprofile%\cookies\*.*
del /f /s /q "%userprofile%\recent\*.*"
这四行预期作用分别是清除IE缓存、临时安装文件、cookies、最近的记录(recent我是顾名思义的),有何不对?不对的是使用了相对固定的路径。下面分XP和vista来谈:
XP:XP原版路径是没错,可是网上众多XP修改版本(juju猫呀、深度呀、雨林呀、番茄。。。。。等等,N多,而且层出不穷),而且修改了 IE缓存、cookies、临时安装文件夹 的不在少数,使用这些系统的用户更不在少数,有的用户还会自己手动修改这些文件夹的路径,这就明显使这几行命令不能发挥作用。IE缓存是重要的清理对象,连IE缓存都清理不了,没有意义了。
Vista:不管是什么版本,除了del /f /s /q "%userprofile%\Local Settings\Temp\*.*" 能在原版上发挥作用外,其它都没用。
因为Vista的默认路径:IE缓存:%USERPROFILE%\AppData\Local\Microsoft\Windows\Temporary Internet Files
cookies:%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Cookies
recent:%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent
在vista上使用结果显然而见。
这个也是有解决方法的,因为这些都是系统文件夹,能让路径不错误的方法就是在注册表中获取路径并清理。批处理也是可以获取注册表的。这个可能有人不相信可以做到,特写个代码吧。不相信可以做到的把下面引用中的代码保存在记事本,更改扩展名为 bat
set ttemp=%cd%
reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v cache >>"%ttemp%\cache.txt"
for /f "usebackq tokens=2,*" %%i in ("%ttemp%\cache.txt") do set chpath=%%j
del /f /s /q "%chpath%\*.*"
del /q "%ttemp%\cache.txt"
使用这个代码无论你把IE缓存修改到哪里,都能准确清理。
唉,终于打完,看完应该没有小菜把这鸟东西当狠厉害吧。想速度的人在 internet选项删除IE缓存 和 加个系统自带的磁盘清理,更好。