
[分享]批處理提取IE緩存文件近來很忙,很久沒上來了^_^做了些小改動,小升一下下...ps:忘了給大家說,提取文件大小是有限制的,太小的文件可能會被過濾掉,限制可以通過修改list變量第二節(jié)來改變,如下紅線所示:set List4=圖片:50000:*.BMP...修改為0則不限制大小。新增類型所有文件不會對大小進行限制.
nclick="copycode($('code0'));">復(fù)制代碼
- @echo off & setlocal enabledelayedexpansion
- rem Last modified on -4-21 17:19
- rem abc def ghi jkl mno pqr stu vw xyz
- ::======參數(shù)設(shè)定======::
- set Ver=Ver 1.02
- set DAY=3
- set Detail=true
- set NameMODE=2
- set OUTPUT=%~dp0提取緩存文件
- set RegCache=HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerShell 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
- ::====手工參數(shù)輸入====::
- :main
- echo 說明:
- echo 使用本工具可以從IE緩存文件夾中提取緩存文件,請輸入
- echo 要提取的文件類型:
- echo.
- echo v1.02新增: END標(biāo)簽 命名模式選擇 退出延時 程序狀態(tài)顯示
- echo.
- echo 狀態(tài):[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 程序可以只提取指定日期內(nèi)生成的文件,在這里可以輸入
- echo 天數(shù),以決定提取天數(shù)范圍,默認(rèn)為 [%DAY%] 天,如果不想對時
- echo 間進行限制,請輸入 [0].(例:輸入 [1] 為只提取今天)
- echo.
- set /p DAY=請輸入搜索天數(shù)[整數(shù)]:
- 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%天內(nèi), 大于!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
- )
- ::====執(zhí)行結(jié)果模塊===::
- :summary
- call:head R
- echo.
- if %countNum%==0 (
- echo 無可提取%Type%文件.
- ) else (
- echo 共成功提取 [%countNum%] 個%Type%文件(共%total%KB).
- echo 全部存入 [%OUTPUT%%Type%].
- )
- echo.
- set /p continue=是否繼續(xù)提取其它文件(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

