找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16707|回复: 9

[文件操作] [分享]批处理提取IE缓存文件

[复制链接]
发表于 2011-4-21 17:42:02 | 显示全部楼层 |阅读模式
近来很忙,很久没上来了^_^
做了些小改动,小升一下下...

ps:忘了给大家说,提取文件大小是有限制的,太小的文件可能会被过滤掉,限制可以通过修改list变量第二节来改变,如下红线所示:
set List4=图片:50000:*.BMP...
修改为0则不限制大小。
新增类型"所有文件"不会对大小进行限制.

  1. @echo off & setlocal enabledelayedexpansion
  2. rem Last modified on 2011-4-21 17:19
  3. rem abc def ghi jkl mno pqr stu vw xyz

  4. ::======参数设定======::
  5. set Ver=Ver 1.02
  6. set DAY=3
  7. set Detail=true
  8. set NameMODE=2
  9. set OUTPUT=%~dp0提取缓存文件\
  10. set RegCache="HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
  11. set List1=视频:500000:*.FLV,*.F4V,*.HLV,*.WMV,*.MOV,*.MP4,*.MPG,*.M4V,*.AVI,*.RM*,*.ASF
  12. set List2=音频:300000:*.WAV,*.MP3,*.M4A,*.MID,*.WMA,*.RA,*.OGG,*.AAC,*.AMR,*.APE,*.CUE
  13. set List3=压缩:50000:*.RAR,*.ZIP,*.r0?,*.GZ,*.JAR,*.Z,*.7Z
  14. set List4=图片:50000:*.BMP,*.JPG,*.JPEG,*.GIF,*.PNG
  15. set List5=所有:0:*.*

  16. ::======工具题头======::
  17. :head
  18. cls
  19. echo =============^|  IE缓存文件提取工具 %Ver%  ^|=============
  20. echo.
  21. echo Support by spark12 QQ:43218369
  22. echo.
  23. if "%1"=="R" goto :EOF

  24. ::====手工参数输入====::
  25. :main
  26. echo 说明:
  27. echo     使用本工具可以从IE缓存文件夹中提取缓存文件,请输入
  28. echo 要提取的文件类型:
  29. echo.
  30. echo       v1.02新增: END标签 命名模式选择 退出延时 程序状态显示
  31. echo.
  32. echo       状态:[DAY %DAY%; DET %Detail%; MOD %NameMODE%]
  33. echo.
  34. echo     (注意:新的提取会覆盖老的提取,如有必要请先将旧文件
  35. echo 另存。输入 Q 退出程序)
  36. echo.
  37. set slist=
  38. for /l %%c in (1,1,10) do (
  39.         if defined List%%c (
  40.                 for /f "tokens=1-3 delims=:" %%m in ("!List%%c!") do (
  41.                         echo         [%%c]: %%m文件
  42.                         set slist=!slist!%%c,
  43.                 )
  44.         )
  45. )
  46. echo.
  47. set /p swich=请输入选择编号 [%slist:~0,-1%]?
  48. set swich=%swich: =%
  49. if /i "%swich%"=="Q" goto end
  50. if not defined List%swich% cls&echo &call:head R&goto main
  51. echo 已选择 %swich%

  52. :dnum
  53. call:head R
  54. echo.
  55. echo     程序可以只提取指定日期内生成的文件,在这里可以输入
  56. echo 天数,以决定提取天数范围,默认为 [%DAY%] 天,如果不想对时
  57. echo 间进行限制,请输入 [0].(例:输入 [1] 为只提取今天)
  58. echo.
  59. set /p DAY=请输入搜索天数[整数]:
  60. set DAY=%DAY: =%
  61. echo %DAY%|FINDSTR /R "^[0-9][0-9]*$" >nul 2>&1||echo &&goto dnum
  62. echo 已输入 %DAY%

  63. if not exist "%OUTPUT%" md "%OUTPUT%"

  64. ::获取IE缓存文件夹位置::
  65. for /f "tokens=1,* delims=Z" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
  66. set IEcache=%IEcache:~1%

  67. ::==时间偏移计算模块==::
  68. for /f "tokens=1-3 delims=-:/ " %%a in ("%date%") do (
  69.         set Y=%%a&set M=%%b&set D=%%c&if "!M:~0,1!"=="0" set M=!M:~1!
  70.         if "!D:~0,1!"=="0" set D=!D:~1!
  71. )
  72. set/a D=D-%DAY%
  73. if !D! leq 0 (
  74.         set/a M-=1&if !M!==0 set/a Y-=1,M=12
  75.         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
  76. )
  77. set M=0%M%
  78. set D=0%D%
  79. set SDay=%Y%!M:~-2!!D:~-2!

  80. ::====文件提取模块===::
  81. :extract
  82. call:head R
  83. for /f "tokens=1-3 delims=:" %%m in ("!List%swich%!") do (
  84.         set /a Lim=%%n/1024
  85.         set Type=%%m
  86.         set total=0
  87.         if %DAY%==0 (
  88.                 echo 正在提取 [!Type!] 文件(不限时间, 大于!Lim!K以上)
  89.         ) else (
  90.                 echo 正在提取 [!Type!] 文件(%DAY%天内, 大于!Lim!K以上)
  91.         )
  92.         echo.
  93.         if exist "%OUTPUT%!Type!" (
  94.                 cd "%OUTPUT%!Type!"
  95.                 del /f /q %%o 2>nul && cd..
  96.         ) else md "%OUTPUT%!Type!"
  97.         set /a countNum=1
  98.         set tp=000!countNum!
  99.         for /r "%IEcache%" %%g in (%%o) do (
  100.                 set fileSize=%%~zg
  101.                 set swh=false
  102.                 if !fileSize! GEQ %%n (
  103.                         set fileDate=%%~tg
  104.                         set fileTime=!fileDate:~11!
  105.                         set fileTime=!fileTime::=-!
  106.                         set fileDate=!fileDate:~0,10!
  107.                         set fileDate=!fileDate:-=!
  108.                         set fileTime=!fileDate!_!fileTime!
  109.                         if "%DAY%"=="0" set swh=true
  110.                         if !fileDate! GTR %SDay% set swh=true
  111.                         if /i "!swh!"=="true" (
  112.                                 set /a fLim=%%~zg/1024
  113.                                 set /a total+=%%~zg
  114.                                 set lastName=0000%%~ng
  115.                                 set lastName=!lastName:~-7,4!
  116.                                 if /i "%Detail%"=="true" echo COPY 文件:[%%~nxg]  大小:[!fLim! K]

  117.                                 set name=!fileTime!_!lastName:[=0!
  118.                                 if "%NameMODE%"=="2" (
  119.                                         set name=%%~ng
  120.                                         if "!name:~-4,1!"=="[" (
  121.                                                 set name=!name:~0,-4!_
  122.                                         ) else (
  123.                                                 set name=!name:~0,-3!_
  124.                                         )
  125.                                 )
  126.                                 copy /y "%%g" "%OUTPUT%!Type!\!name!!tp:~-4!%%~xg" >nul&&set /a countNum+=1
  127.                                 set tp=000!countNum!
  128.                         )
  129.                 )
  130.         )
  131.         dir /b "%OUTPUT%!Type!"|findstr ".">nul||rd /q "%OUTPUT%!Type!"
  132.         set /a countNum-=1
  133.         set /a total/=1024
  134. )

  135. ::====执行结果模块===::
  136. :summary
  137. call:head R
  138. echo.
  139. if %countNum%==0 (
  140.         echo 无可提取%Type%文件.
  141. ) else (
  142.         echo 共成功提取 [%countNum%] 个%Type%文件(共%total%KB).
  143.         echo 全部存入 [%OUTPUT%%Type%].
  144. )
  145. echo.
  146. set /p continue=是否继续提取其它文件(Y/N^)?:
  147. set continue=%continue: =%
  148. if /i not "%continue%"=="N" goto head
  149. dir /b "%OUTPUT%"|findstr ".">nul||cd..&rd /q "%OUTPUT%" 2>nul
  150. :end
  151. echo 正在退出...
  152. ping 128.1 -n 1 -w 500 >nul
复制代码
发表于 2011-4-22 10:56:10 | 显示全部楼层
获取IE缓存文件夹位置需要修正

  1. for /f "tokens=1,* delims=Z" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
  2. set IEcache=%IEcache:~1%
复制代码
改为
  1. for /f "tokens=2,* delims= " %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
复制代码
执行效率更高点改为
  1. for /f "skip=4 tokens=2*" %%a in ('reg QUERY %RegCache% /v "Cache"') do set "IEcache=%%b"
复制代码
兼容性强一点改为
  1. >tmp.vbs echo WScript.Echo CreateObject("Shell.Application").Namespace(^&H20^&).Self.Path
  2. for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set IEcache=%%i& del tmp.vbs
复制代码
发表于 2011-4-22 11:23:43 | 显示全部楼层
http://www.bathome.net/thread-11808-1-1.html

如何清除ie地址栏的历史网站记录呢?

多谢楼上2位。
发表于 2011-4-22 11:25:11 | 显示全部楼层
帮忙解决下啊。
发表于 2011-4-22 17:43:28 | 显示全部楼层
  1. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
复制代码
发表于 2011-4-22 22:04:17 | 显示全部楼层
之前还以为是历史记录,原来是“自动完成历史记录”可能表达不同吧
  1. :删除IE历史
  2. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

  3. :删除自动完成历史记录
  4. RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8649
复制代码
发表于 2011-4-23 14:16:28 | 显示全部楼层
好强大。学习一下。
 楼主| 发表于 2011-4-29 01:01:42 | 显示全部楼层
本帖最后由 spark12 于 2011-4-29 01:22 编辑

2# fastslz


多谢提醒! 还是这样好一点

  1. for /f "tokens=2*" %%x in ('REG QUERY %RegCache% /v Cache^|find /I "Cache"') do (set IEcache=%%y)
复制代码
相对于REG FIND 感觉还是 WScript cscript 比较容易被搞定
有了FIND兼容性也强一些。至于效率嘛...BAT上应该觉察不到区别吧,呵!
 楼主| 发表于 2011-6-24 22:58:20 | 显示全部楼层
奇怪!本贴在“我的帖子”中消失了? @_@
发表于 2011-6-24 23:03:41 | 显示全部楼层
不错
如果此贴是原创内容的话,可否移动到原创代码区呢?征求下楼主的意见...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 17:21 , Processed in 0.011255 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表