一键清理系统垃圾文件.bat 的原理 一键清理系统垃圾 bat 好用吗

作者&投稿:禾窦 (若有异议请与网页底部的电邮联系)
以以下几条语句为例
del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
rd /s /q %windir%\temp & md %windir%\temp
del是删除文件的命令,/f是强制删除只读属性的文件 /s 删除子目录下的相应文件 /q是安静模式,即如果你删除的文件含有通配符*,删除时不会询问你是否要删除全部文件,后面的%systemdrive%是系统的变量,代表你的系统安装的分区(通常是C:)*.tmp使用通配符*,代表任何文件名,tmp是文件的扩展名,tmp类型的文件是临时文件,所以都可以删除(其他类型的有的也是可以全部删除,此处仅以tmp举例),
*.*是删除文件夹下的全部文件(即清空文件夹),recycled是回收站
%windir%通常是C:\windows也就是windows安装文件夹
rd 是删除文件夹命令 /s删除子目录,/q删除子目录是不用确认
md是新建文件夹,由于temp文件夹是系统存放临时文件的一个必要文件夹删除后还要重建

临时文件——*.tmp、*._mp
日志文件——*.log
临时帮助文件——*.gid
磁盘检查文件——*.chk
临时备份文件——如:*.old、*.bak
相关命令行解释以及知识

 *.bat的文件就是批处理文件,是一种文本文件。简单的说,它的作用就是自动地连续执行多条命令,批处理文件的内容就是一条一条的命令。

echo、@、call、pause、rem 是批处理文件最常用的几个命令,我们就从他们开始学起。

echo 表示显示此命令后的字符
echo off 表示在此语句后所有运行的命令都不显示命令行本身
@ 与echo off 相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
call 调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条文件后将无法执行 当前文件后续命令)
pause 运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续
rem 表示此命令后的字符为解释行,不执行,只是给自己今后查找用的

批处理文件中还可以像C语言一样使用参数,这只需用到一个参数表示符%。
%表示参数,参数是指在运行批处理文件时在文件名后加的字符串。变量可以从 %0到%9,%0表示文件名本身,字符串用%1到%9顺序表示。
例如,C:根目录下一批处理文件名为f.bat,内容为 format %1
则如果执行C:\>f a: 则实际执行的是format a:
又如C:根目录下一批处理文件的名为t.bat,内容为 type %1 type %2
那么运行C:\>t a.txt b.txt 将顺序地显示a.txt和b.txt文件的内容
if goto choice for 是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句。如if exist config.sys edit config.sys
3、if errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2 goto x2 DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码
goto 批处理文件运行到这里将跳到goto 所指定的标号处,一般与if配合使用。 如:
goto end
:end
echo this is the end
标号用 :字符串表示,标号所在行不被执行
以下是命令了一些帮助

//-----------------------del--------------------------------------------//

删除一个或数个文件。

DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names
ERASE [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

names 指定一个或数个文件或目录列表。通配符可被用来
删除多个文件。如果指定了一个目录,目录中的所
有文件都会被删除。

/P 删除每一个文件之前提示确认。
/F 强制删除只读文件。
/S 从所有子目录删除指定文件。
/Q 安静模式。删除全局通配符时,不要求确认。
/A 根据属性选择要删除的文件。
attributes R 只读文件 S 系统文件
H 隐藏文件 A 存档文件
- 表示“否”的前缀

如果命令扩展名被启用,DEL 和 ERASE 会如下改变:

/S 开关的显示句法会颠倒,即只显示已经
删除的文件,而不显示找不到的文件。

//---------------------------------------rd----------------------//

删除一个目录。

RMDIR [/S] [/Q] [drive:]path
RD [/S] [/Q] [drive:]path

/S 除目录本身外,还将删除指定目录下的所有子目录和
文件。用于删除目录树。

/Q 安静模式,带 /S 删除目录树时不要求确认

@echo off
@ ECHO.
@ ECHO.
@ ECHO. 说 明
@ ECHO -----------------------------------------------------------------------
@ ECHO 这是网上流传的批处理。它会帮您删除回收站、临时目录、最近打开过的文档痕迹
@ ECHO 等。对系统运行会有帮助。如果你电脑运行速度很慢,是因为是因为太多无用的运
@ ECHO 算占据了CPU和内存资源所致。重做系统或用Ghost恢复系统是最彻底的办法。
@ ECHO.
@ ECHO -----------------------------------------------------------------------
@ ECHO.
echo.
echo 本程序特点:
echo 鉴于很多人把IE缓存等文件夹转移到非系统盘,
echo 所以,本程序清理垃圾文件时,首先进行判断系统的设置。
echo.
echo.
echo 优点:清理位置更加准确,策略更加科学。
echo.
echo.
pause
@echo off
color 2f
Title 系统垃圾文件清理器
echo.
echo.
echo 开始执行清理……
echo.
echo 正在检查cookies、历史纪录等目录位置(当前用户)……
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cache>%temp%\cleantmp.txt
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cookies>>%temp%\cleantmp.txt
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v History>>%temp%\cleantmp.txt
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v NetHood>>%temp%\cleantmp.txt
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Recent>>%temp%\cleantmp.txt
echo 正在清理Cookies、IE缓存、历史纪录等(当前用户)……
for /f "tokens=3*" %%a in (%temp%\cleantmp.txt) do (
for /d %%i in ("%%a %%b\*.*") do rd /s /q "%%i"
del /a /f /s /q "%%a %%b\*.*"
)
::跟上面几项未必是重复的(!),也是对当前用户目录
echo 正在清理临时文件 (系统目录)……
del /a /f /s /q "%userprofile%\Locals~1\Tempor~1\*.*"
del /a /f /s /q "%userprofile%\Locals~1\Temp\*.*"
del /a /f /s /q "%userprofile%\cookies\*.*"
del /a /f /s /q "%userprofile%\recent\*.*"
del /a /f /s /q "%Temp%\*.*"
del /a /f /s /q "%Tmp%\*.*"
del /a /f /s /q "%HomePath%\..\IconCache.db"
echo 正在清理系统目录中的垃圾文件 (稍候,需要点时间)……
del /a /f /s /q "%SystemRoot%\*._mp"
del /a /f /s /q "%SystemRoot%\*.bak"
del /a /f /s /q "%SystemRoot%\*.log"
del /a /f /s /q "%SystemRoot%\*.dmp"
del /a /f /s /q "%SystemRoot%\*.gid"
del /a /f /s /q "%SystemRoot%\*.old"
del /a /f /s /q "%SystemRoot%\*.query"
del /a /f /q "%SystemRoot%\*.tmp"
rd /s /q "%SystemRoot%\Downloaded Program Files"
rd /s /q "%SystemRoot%\Offline Web Pages"
rd /s /q "%systemroot%\Connection Wizard"
rd /s /q "%SystemRoot%\SoftwareDistribution\Download"
rd /s /q "%SystemRoot%\Assembly"
rd /s /q "%SystemRoot%\Help"
rd /s /q "%SystemRoot%\ReinstallBackups"
del /a /s /q "%SystemRoot%\inf\*.pnf"
del /a /f /s /q "%SystemRoot%\inf\InfCache.1"
dir %SystemRoot%\inf\*.* /ad/b >%SystemRoot%\vTmp.txt
for /f %%a in (%SystemRoot%\vTmp.txt) do rd /s /q "%SystemRoot%\inf\%%a"
del /a /f /s /q "%SystemRoot%\driver?\*.pnf"
del /a /f /s /q "%SystemRoot%\driver?\InfCache.1"
del /a /f /s /q "%SystemDrive%\driver?\*.pnf"
del /a /f /s /q "%SystemDrive%\driver?\InfCache.1"
rd /s /q "%SystemRoot%\temp" & md "%SystemRoot%\temp"
del /a /f /s /q "%SystemRoot%\Prefetch\*.*"
del /a /f /s /q "%SystemRoot%\minidump\*.*"
echo 正在清除无用的磁盘检错文件 (系统分区)……
del /a /f /q "%SystemDrive%\*.chk"
dir %SystemDrive%\found.??? /ad/b >%SystemRoot%\vTmp.txt
for /f %%a in (%SystemRoot%\vTmp.txt) do rd /s /q "%SystemDrive%\%%a"
echo 正在清理系统升级补丁留下来的反安装目录 (已修正能正确清除)……
dir %SystemRoot%\$*$ /ad/b >%SystemRoot%\vTmp.txt
for /f %%a in (%SystemRoot%\vTmp.txt) do rd /s /q "%SystemRoot%\%%a"
echo 正在清除常见的软件垃圾项目 (按默认目录)……
rd /s /q "%ProgramFiles%\InstallShield Installation Information"
Ren "%ProgramFiles%\Common~1\Real\Update_OB\realsched.exe" realsched.ex_
Del "%ProgramFiles%\Common~1\Real\Update_OB\realsched.exe"
Reg Delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v TkBellExe /f
rd /s /q "%ProgramFiles%\Tencent\QQGame\Download"
taskkill /f /im "TIMPlatform.exe" /t
del /a /f /s /q "%ProgramFiles%\Tencent\QQ\TIMPlatform.exe"
del /a /f /s /q "%ProgramFiles%\Kaspersky Lab\*.tmp"
del %SystemRoot%\vTmp.txt
echo.
echo 全部清理完毕,任意键退出 (注: 若提示文件没找到是正常的)……
pause

一键清理系统垃圾文件.bat 的原理~

以以下几条语句为例
del
/f
/s
/q
%systemdrive%\*.tmp
del
/f
/s
/q
%systemdrive%ecycled\*.*
del
/f
/s
/q
%windir%\*.bak
rd
/s
/q
%windir%emp
&
md
%windir%emp
del是删除文件的命令,/f是强制删除只读属性的文件
/s
删除子目录下的相应文件
/q是安静模式,即如果你删除的文件含有通配符*,删除时不会询问你是否要删除全部文件,后面的%systemdrive%是系统的变量,代表你的系统安装的分区(通常是C:)*.tmp使用通配符*,代表任何文件名,tmp是文件的扩展名,tmp类型的文件是临时文件,所以都可以删除(其他类型的有的也是可以全部删除,此处仅以tmp举例),
*.*是删除文件夹下的全部文件(即清空文件夹),recycled是回收站
%windir%通常是C:\windows也就是windows安装文件夹
rd
是删除文件夹命令
/s删除子目录,/q删除子目录是不用确认
md是新建文件夹,由于temp文件夹是系统存放临时文件的一个必要文件夹删除后还要重建

批处理删除系统垃圾其实本身就是一个垃圾

如果你在网上搜索"清除系统垃圾的批处理"、"批处理清除系统垃圾"之类的关键词,能找到成千上万个类似于下面的批处理。这段代码可以说是广为流传,咋一用起来貌似也很不错,比那些优化软件方便多了,双击鼠标,一切搞定,还能弹出很酷的黑色界面。很多网友也乐于此道,还非常执著地从一个论坛转发到另一个论坛,在这个QQ群转发到那个QQ群,甚至email群发给N多同事。

其实这段代码本身就是一个垃圾中的霸主。那是什么?还是垃圾!

@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%ecycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%emp & md %windir%emp
del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%ecent\*.*
del /f /q %userprofile%\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%ecent\*.*"
echo 清除系统垃圾完成!
echo. & pause

这段代码本身没有任何错误,一般来说可以顺利执行。下面我们就来看看它的危害吧。

rd /s /q %windir%emp & md %windir%emp
如果你安装了IIS+ASP.NET的话,很可能就会遇到这个问题。在安装ASP.NET的时候,会对temp目录进行权限设置。但是上面这个命令在删除temp文件夹并重建的过程中,会把这个权限的设置抹杀掉。后果就是你的ASP.NET所有页面都不能成功打开,而且显示的错误是framework目录下temp中随机文件写失败(而不是windir temp目录缺少相应权限)。如果你没有看过类似的文章,恐怕很难知道从何下手解决这个问题。其实除了ASP.NET以外,其它应用程序也有可能出现同样的问题。

del /f /s /q %systemdrive%\*.log
日志文件可不是随便删除的,否则很多软件会无法正常卸载。更要命的是,你的数据库可能因此而崩溃。以前有位同事就被这个害惨了,当时请教了好几位OCP都没有办法,只好重装数据库。

del /f /q %userprofile%\cookies\*.*
我登陆大大小小的几十个论坛时,都选择了保存用户名和密码,谁要是把我的cookies删除了,我真想掐死他。

del /f /s /q %windir%\*.bak
不是所有的.bak文件都是垃圾。一些更改XP启动画面的软件,通常会将system32目录下的logonui.exe重命名为logonui.bak,当你觉得不爽,要卸载软件软件时,那么会自动还原为原来的logonui.exe文件。但是如果你在卸载之前就把.bak删除掉了,那就是真的不爽了。