中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]红叶清除垃圾文件的批处理有点不懂请指点
作者:
标题: [已结]红叶清除垃圾文件的批处理有点不懂请指点 上一主题 | 下一主题
wanxibing
新手上路





积分 11
发帖 7
注册 2008-11-23
状态 离线
『楼 主』:  [已结]红叶清除垃圾文件的批处理有点不懂请指点

深山红叶清除垃圾文件的批处理中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 ]

2009-1-8 01:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 2 楼』:  

for 帮助的一部分

tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代
                   的 for 本身。这会导致额外变量名称的分配。m-n
                   格式为一个范围。通过 nth 符号指定 mth。如果
                   符号字符串中的最后一个字符星号
                   那么额外的变量将在最后一个符号解析之后
                   分配并接受行的保留文本。

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2009-1-8 11:24




正在潜水修练的批处理小白
2009-1-8 01:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wanxibing
新手上路





积分 11
发帖 7
注册 2008-11-23
状态 离线
『第 3 楼』:  非常谢谢dikex 热心帮忙回复

经过你的回复,我现在懂了,明白了,你在万忙之中,回复我,可喜可贺!
祝你新春快乐!

2009-1-8 01:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tempuser
高级用户





积分 547
发帖 261
注册 2006-4-15
状态 离线
『第 4 楼』:  

我一直以为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就可以省略吧!这样看得就清楚些,对吗?

2009-1-8 10:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: