说到Windows系统垃圾清理,本站之前有推荐过CCleaner,非常优秀。不过今天要讲的是XP时代那个非常经典的批处理一键垃圾清理程序,当年非常非常流行。效果还是不错的,或许运行速度没什么提高,但不可否认的是清理之后C盘确实空出了不少空间,这其中IE缓存文件占了很大一部分吧!这个经典的批处理源代码如下:

@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 s\*.* 
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

  现在已经是 Windows 8/7 时代了,很多人怀疑这个程序是否还适用,今天就来详细阐述一下。其实从XP到Win7、Win8,微软的系统文件及文件夹的布局并没有发生太大的改变,所以以上的批处理仍然适用。其实好不好用关键还是在于了解每条语句的意思。很多其实并不是系统垃圾,比如Cookies(中文翻译不知道叫什么好,你懂的),比如recent(最近操作记录),这些你都可以自己选择是否清理。

系统垃圾清理

  本文重点要讲解的是 del /f /s /q %windir%\prefetch\*.* 这条命令 ,prefetch是什么文件夹?Prefetcher(预读取)是始于Windows XP的一项内存管理技术,它能够跟踪用户习惯,预先从硬盘上中载入一部分常用程序运行所需的数据片段到物理内存中,从而提升系统和程序运行速度。详细的说明如下:
这种技术在系统或者应用程序启动过程中,监视数据在磁盘和内存之间的移动规律或者状况,预先把那些读写频率较高的数据,保存到 %systemroot%\Prefetch文件夹扩展名为.pf的文件中,并一种规则高效的方式存放这些文件。这样,当这些数据被重复读取的时候,就可以直接从这些缓存文件中读取,而不用重新读取硬盘扇区、磁道,寻找数据的原始位置,自然也就加速了应用程序的响应速度。但这种技术主要的缓存方式仍然是基于磁盘的。

  而到了Vista年代,这种技术升级成了SuperFetch,即超级预读取。进一步提升了效率,并且能够在不同时间点抓取不同程序的数据片段,打个比方,你习惯在早上开机后第一时间打开浏览器,而喜欢在傍晚使用相关软件(云盘客户端)与硬盘同步数据,那么Windows就不会在早上启动时就读入同步软件的有关数据片段。详细的说明如下:到了Windows Vista,因为计算机的内存已经日益增大,设计人员开始考虑使用内存作为预读快取的数据存放空间。但出于两方面的原因,一内存是不可记忆的,一旦断电所有数据都将丢失;二 内存并没大到可以容纳所有应用程序的程度,故而Superfetch的读写操作虽然主要是基于内存,但是将数据写入内存的同时,仍然会写入硬盘,以用于数据交换。这些数据以文件形式存在,通常它们的存放位置在%SystemRoot%\Prefetch目录中扩展名为.db。

  知道了原理,也就知道了删除或者清空Prefetch文件夹,会造成系统丢失这些跟踪数据,从而影响整个系统的效率。同时,系统也将重新花费较长的时间来再次建立这些记录。所以,建议保留。我刚看到华军软件园上的一篇文章,说Superfetch会进一步加剧了磁盘读写,如果你的硬盘速度比较慢的话,计算机硬盘速度碰巧比较慢,建议关闭该功能。这是两码事,不要混淆了。在此提供修改后的一键垃圾清理程序 for Windows 7 and Windows 8: