标题: [已结]红叶清除垃圾文件的批处理有点不懂请指点
[打印本页]
作者: wanxibing
时间: 2009-1-8 01:05
标题: [已结]红叶清除垃圾文件的批处理有点不懂请指点
深山红叶清除垃圾文件的批处理中for 的变量,有点不懂
经我测试,深山红叶的清除垃圾文件的批处理的确是很智能,我在网上看到别的清除垃圾文件的批处理,都是系统默认的位置,殊不知,我等系统玩家,改变了系统的默认设置,以至有的人做的批处理不适合了,而深山红叶确能做到智能查找,所以我发给大家,以供学习研究吧,不过我对FOR中的%%b如下句有点不解
for /f "tokens=3*" %%a in (%temp%\cleantmp.txt) do (
for /d %%i in ("%%a %%b\*.*") do rd /s /q "%%i">nul 2>nul
del /a /f /s /q "%%a %%b\*.*">nul 2>nul
)
以上的%%b好像没有事先声明呀!请高手指点下
深山红叶清除垃圾文件的批处理全文如下:
@echo off
color 2f
title 系统垃圾文件清理
echo.
echo.
echo 正在清理系统目录中的垃圾文件……
del /f /q %systemdrive%\*.tmp>nul 2>nul
del /f /q %systemdrive%\*._mp>nul 2>nul
del /f /q %systemdrive%\*.log>nul 2>nul
del /f /q %systemdrive%\*.gid>nul 2>nul
del /f /q %systemdrive%\*.chk>nul 2>nul
del /f /q %systemdrive%\*.old>nul 2>nul
del /a /f /q %systemdrive%\Recycler\*.*>nul 2>nul
del /f /q "%ALLUSERSPROFILE%\Documents\DrWatson\*.*">nul 2>nul
del /f /q "%USERPROFILE%\Application Data\Microsoft\Office\Recent\*.lnk">nul 2>nul
del /a /f /s /q "%systemroot%\temp\*.*">nul 2>nul
del /a /f /s /q "%systemroot%\Prefetch\*.*">nul 2>nul
del /f /q /s /a "%systemroot%\minidump\*.*">nul 2>nul
del /a /f /s /q "%systemroot%\*.log">nul 2>nul
del /a /f /s /q "%systemroot%\*.dmp">nul 2>nul
del /a /f /s /q "%systemroot%\*.tmp">nul 2>nul
del /a /f /s /q "%systemroot%\*._mp">nul 2>nul
del /a /f /s /q "%systemroot%\*.gid">nul 2>nul
del /a /f /s /q "%systemroot%\*.bak">nul 2>nul
del /a /f /s /q "%systemroot%\*.old">nul 2>nul
del /a /f /s /q "%systemroot%\*.query">nul 2>nul
echo 正在清理系统升级补丁留下来的反安装目录……
for /d %%a in ("%systemroot%\$*$") do attrib -a -r -h "%%a" && do rd /s /q "%%a">nul 2>nul
echo 正在清理临时文件……
for /d %%a in ("%temp%\*.*") do rd /s /q "%%a">nul 2>nul
del /a /f /s /q "%temp%\*.*">nul 2>nul
for /d %%a in ("%tmp%\*.*") do rd /s /q "%%a">nul 2>nul
del /a /f /s /q "%tmp%\*.*">nul 2>nul
echo 正在清除浏览器缓存、历史及 Cookies……
rem 查询IE缓存位置
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cache>%temp%\cleantmp.txt
rem 查询cookies位置
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Cookies>>%temp%\cleantmp.txt
rem 查询历史纪录位置
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v History>>%temp%\cleantmp.txt
rem 查询NetHood位置
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v NetHood>>%temp%\cleantmp.txt
rem 查询Recent位置
reg query "HKCU\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Recent>>%temp%\cleantmp.txt
for /f "tokens=3*" %%a in (%temp%\cleantmp.txt) do (
for /d %%i in ("%%a %%b\*.*") do rd /s /q "%%i">nul 2>nul
del /a /f /s /q "%%a %%b\*.*">nul 2>nul
)
echo.
echo 全部清理完毕,马上自动退出……
for /l %%i in (1,1,30000) do @echo %%i>nul
以上是deltem.bat 愿结交天下所有电脑爱好者及批处理高手大侠
我的联系如下 QQ:657991840
wanxibing@163.com 13242905978
[
Last edited by HAT on 2009-1-8 at 11:24 ]
作者: dikex
时间: 2009-1-8 01:11
for 帮助的一部分
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
作者: wanxibing
时间: 2009-1-8 01:38
标题: 非常谢谢dikex 热心帮忙回复
经过你的回复,我现在懂了,明白了,你在万忙之中,回复我,可喜可贺!
祝你新春快乐!
作者: tempuser
时间: 2009-1-8 10:11
我一直以为tokens是按列取值,但现在有点绕,以下上cleantmp.txt内容:
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Cache REG_SZ C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Cookies REG_SZ C:\Documents and Settings\Administrator\Cookies
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
History REG_SZ C:\Documents and Settings\Administrator\Local Settings\History
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
NetHood REG_SZ C:\Documents and Settings\Administrator\NetHood
! REG.EXE VERSION 3.0
HKEY_CURRENT_USER\software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Recent REG_SZ C:\Documents and Settings\Administrator\Recent
那么我用:for /f "tokens=3*" %%a in (%temp%\cleantmp.txt) do echo %%a %%b >>test.txt
结果如下:
VERSION 3.0
C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files
VERSION 3.0
C:\Documents and Settings\Administrator\Cookies
VERSION 3.0
C:\Documents and Settings\Administrator\Local Settings\History
VERSION 3.0
C:\Documents and Settings\Administrator\NetHood
VERSION 3.0
C:\Documents and Settings\Administrator\Recent
这个时候按列取值我就取不明白了!能给具体解释吗?%%b的值如果是类似以上的C:\Documents and Settings\Administrator\Local Settings\Temporary ,那么
for /d %%i in ("%%a %%b\*.*") do rd /s /q "%%i">nul 2>nul
del /a /f /s /q "%%a %%b\*.*">nul 2>nul
中的%%a就可以省略吧!这样看得就清楚些,对吗?