标题: [文件操作] [分享]批处理提取IE缓存文件 [打印本页]
作者: spark12 时间: 2011-4-21 17:42 标题: [分享]批处理提取IE缓存文件
近来很忙,很久没上来了^_^
做了些小改动,小升一下下...
ps:忘了给大家说,提取文件大小是有限制的,太小的文件可能会被过滤掉,限制可以通过修改list变量第二节来改变,如下红线所示:
set List4=图片:50000:*.BMP...
修改为0则不限制大小。
新增类型"所有文件"不会对大小进行限制.- @echo off & setlocal enabledelayedexpansion
- rem Last modified on 2011-4-21 17:19
- rem abc def ghi jkl mno pqr stu vw xyz
-
- ::======参数设定======::
- set Ver=Ver 1.02
- set DAY=3
- set Detail=true
- set NameMODE=2
- set OUTPUT=%~dp0提取缓存文件\
- set RegCache="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
- set List1=视频:500000:*.FLV,*.F4V,*.HLV,*.WMV,*.MOV,*.MP4,*.MPG,*.M4V,*.AVI,*.RM*,*.ASF
- set List2=音频:300000:*.WAV,*.MP3,*.M4A,*.MID,*.WMA,*.RA,*.OGG,*.AAC,*.AMR,*.APE,*.CUE
- set List3=压缩:50000:*.RAR,*.ZIP,*.r0?,*.GZ,*.JAR,*.Z,*.7Z
- set List4=图片:50000:*.BMP,*.JPG,*.JPEG,*.GIF,*.PNG
- set List5=所有:0:*.*
-
- ::======工具题头======::
- :head
- cls
- echo =============^| IE缓存文件提取工具 %Ver% ^|=============
- echo.
- echo Support by spark12 QQ:43218369
- echo.
- if "%1"=="R" goto :EOF
-
- ::====手工参数输入====::
- :main
- echo 说明:
- echo 使用本工具可以从IE缓存文件夹中提取缓存文件,请输入
- echo 要提取的文件类型:
- echo.
- echo v1.02新增: END标签 命名模式选择 退出延时 程序状态显示
- echo.
- echo 状态:[DAY %DAY%; DET %Detail%; MOD %NameMODE%]
- echo.
- echo (注意:新的提取会覆盖老的提取,如有必要请先将旧文件
- echo 另存。输入 Q 退出程序)
- echo.
- set slist=
- for /l %%c in (1,1,10) do (
- if defined List%%c (
- for /f "tokens=1-3 delims=:" %%m in ("!List%%c!") do (
- echo [%%c]: %%m文件
- set slist=!slist!%%c,
- )
- )
- )
- echo.
- set /p swich=请输入选择编号 [%slist:~0,-1%]?
- set swich=%swich: =%
- if /i "%swich%"=="Q" goto end
- if not defined List%swich% cls&echo &call:head R&goto main
- echo 已选择 %swich%
-
- :dnum
- call:head R
- echo.
- echo 程序可以只提取指定日期内生成的文件,在这里可以输入
- echo 天数,以决定提取天数范围,默认为 [%DAY%] 天,如果不想对时
- echo 间进行限制,请输入 [0].(例:输入 [1] 为只提取今天)
- echo.
- set /p DAY=请输入搜索天数[整数]:
- set DAY=%DAY: =%
- echo %DAY%|FINDSTR /R "^[0-9][0-9]*$" >nul 2>&1||echo &&goto dnum
- echo 已输入 %DAY%
-
- if not exist "%OUTPUT%" md "%OUTPUT%"
-
- ::获取IE缓存文件夹位置::
- for /f "tokens=1,* delims=Z" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
- set IEcache=%IEcache:~1%
-
- ::==时间偏移计算模块==::
- for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do (
- set Y=%%a&set M=%%b&set D=%%c&if "!M:~0,1!"=="0" set M=!M:~1!
- if "!D:~0,1!"=="0" set D=!D:~1!
- )
- set/a D=D-%DAY%
- if !D! leq 0 (
- set/a M-=1&if !M!==0 set/a Y-=1,M=12
- set/a "T=^!(M-2)","R=(^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)","C=^!(M-4)|^!(M-6)|^!(M-9)|^!(M-11)","D=T*(28+R)+C*30+(^!T&^!C)*31"+D
- )
- set M=0%M%
- set D=0%D%
- set SDay=%Y%!M:~-2!!D:~-2!
-
- ::====文件提取模块===::
- :extract
- call:head R
- for /f "tokens=1-3 delims=:" %%m in ("!List%swich%!") do (
- set /a Lim=%%n/1024
- set Type=%%m
- set total=0
- if %DAY%==0 (
- echo 正在提取 [!Type!] 文件(不限时间, 大于!Lim!K以上)
- ) else (
- echo 正在提取 [!Type!] 文件(%DAY%天内, 大于!Lim!K以上)
- )
- echo.
- if exist "%OUTPUT%!Type!" (
- cd "%OUTPUT%!Type!"
- del /f /q %%o 2>nul && cd..
- ) else md "%OUTPUT%!Type!"
- set /a countNum=1
- set tp=000!countNum!
- for /r "%IEcache%" %%g in (%%o) do (
- set fileSize=%%~zg
- set swh=false
- if !fileSize! GEQ %%n (
- set fileDate=%%~tg
- set fileTime=!fileDate:~11!
- set fileTime=!fileTime::=-!
- set fileDate=!fileDate:~0,10!
- set fileDate=!fileDate:-=!
- set fileTime=!fileDate!_!fileTime!
- if "%DAY%"=="0" set swh=true
- if !fileDate! GTR %SDay% set swh=true
- if /i "!swh!"=="true" (
- set /a fLim=%%~zg/1024
- set /a total+=%%~zg
- set lastName=0000%%~ng
- set lastName=!lastName:~-7,4!
- if /i "%Detail%"=="true" echo COPY 文件:[%%~nxg] 大小:[!fLim! K]
-
- set name=!fileTime!_!lastName:[=0!
- if "%NameMODE%"=="2" (
- set name=%%~ng
- if "!name:~-4,1!"=="[" (
- set name=!name:~0,-4!_
- ) else (
- set name=!name:~0,-3!_
- )
- )
- copy /y "%%g" "%OUTPUT%!Type!\!name!!tp:~-4!%%~xg" >nul&&set /a countNum+=1
- set tp=000!countNum!
- )
- )
- )
- dir /b "%OUTPUT%!Type!"|findstr ".">nul||rd /q "%OUTPUT%!Type!"
- set /a countNum-=1
- set /a total/=1024
- )
-
- ::====执行结果模块===::
- :summary
- call:head R
- echo.
- if %countNum%==0 (
- echo 无可提取%Type%文件.
- ) else (
- echo 共成功提取 [%countNum%] 个%Type%文件(共%total%KB).
- echo 全部存入 [%OUTPUT%%Type%].
- )
- echo.
- set /p continue=是否继续提取其它文件(Y/N^)?:
- set continue=%continue: =%
- if /i not "%continue%"=="N" goto head
- dir /b "%OUTPUT%"|findstr ".">nul||cd..&rd /q "%OUTPUT%" 2>nul
- :end
- echo 正在退出...
- ping 128.1 -n 1 -w 500 >nul
复制代码
作者: fastslz 时间: 2011-4-22 10:56
获取IE缓存文件夹位置需要修正- for /f "tokens=1,* delims=Z" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
- set IEcache=%IEcache:~1%
复制代码
改为- for /f "tokens=2,* delims= " %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
复制代码
执行效率更高点改为- for /f "skip=4 tokens=2*" %%a in ('reg QUERY %RegCache% /v "Cache"') do set "IEcache=%%b"
复制代码
兼容性强一点改为- >tmp.vbs echo WScript.Echo CreateObject("Shell.Application").Namespace(^&H20^&).Self.Path
- for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set IEcache=%%i& del tmp.vbs
复制代码
作者: ygqiang 时间: 2011-4-22 11:23
http://www.bathome.net/thread-11808-1-1.html
如何清除ie地址栏的历史网站记录呢?
多谢楼上2位。
作者: ygqiang 时间: 2011-4-22 11:25
帮忙解决下啊。
作者: fastslz 时间: 2011-4-22 17:43
- RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
复制代码
作者: fastslz 时间: 2011-4-22 22:04
之前还以为是历史记录,原来是“自动完成历史记录”可能表达不同吧- :删除IE历史
- RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
-
- :删除自动完成历史记录
- RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8649
复制代码
作者: jay_16 时间: 2011-4-23 14:16
好强大。学习一下。
作者: spark12 时间: 2011-4-29 01:01
本帖最后由 spark12 于 2011-4-29 01:22 编辑
2# fastslz
多谢提醒! 还是这样好一点- for /f "tokens=2*" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
复制代码
相对于REG FIND 感觉还是 WScript cscript 比较容易被搞定
有了FIND兼容性也强一些。至于效率嘛...BAT上应该觉察不到区别吧,呵!
作者: spark12 时间: 2011-6-24 22:58
奇怪!本贴在“我的帖子”中消失了? @_@
作者: CrLf 时间: 2011-6-24 23:03
不错
如果此贴是原创内容的话,可否移动到原创代码区呢?征求下楼主的意见...
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |