Board logo

标题: 原创QQ/TM用户资料备份器 [打印本页]

作者: xaoheter     时间: 2010-10-9 22:39    标题: 原创QQ/TM用户资料备份器

@echo off cls title 欢迎使用QQ/TM资料备份器! if /i "%~1"=="/help" goto help if /i "%~1"=="/?" goto help if /i "%~1"=="/cfg" goto crcfg if /i "%~1"=="/hidden" goto begain if not "%~1"=="" ( ( echo set Shell=wscript.createObject^(^"wscript.shell^"^) echo Shell.Run ^"%~0 /hidden^", 0, TRUE )>"%temp%\hidden.vbs" start /min %temp%\hidden.vbs exit ) call :version call :vbs1 5 :begain cls color 07 title 系统初始化... echo. echo 程序正在初始化,请稍候... if not exist %~dp0baktec.cfg goto :settings set "cfg=%~dp0baktec.cfg" set "CFG=%CFG:"=%" for /f "tokens=* delims= eol=;" %%i in (%cfg%) do (set %%i) if not "%val%"=="1" ( cls&title 错误... echo.&echo 读取配置出错!配置文件有误或者配置参数不正确! echo. if /i "%~1"=="/hidden" exit pause exit ) if "%delcfg%"=="1" (del "%cfg%" /f /q>nul) echo.&echo 读取配置文件成功; call :vbs1 1 goto :start :settings rem {程序设置(根据实际需要自己更改): rem 压缩文件存放目录,路径不得含有空格字符,目录路径必须以斜杠字符“\”结尾!自身所在目录:%~dp0 set file.rar=%~dp0 rem ;压缩文件注释; set text="%temp%\text.tmp" rem ;压缩文件密码; set pwd=123456 rem ;压缩的文件列表; set lst1="%temp%\list1.tmp" rem ;不压缩的文件列表; set lst2="%temp%\list2.tmp" rem ;设置搜索盘符; set drive=c d e f g h i j k rem ;备份日志 set file.log=%~dp0QQ备份日志.log rem 设置完成。} echo.&echo 读取配置文件成功; cls&title 提示... echo.&echo 程序所在目录内未找到配置文件baktec.cfg。 echo.&echo 程序将使用内置的默认配置进行操作。 echo.&echo 内置配置如下,如需修改,请使用 /cfg 启动进行设置。 echo. echo   压缩文件:%file.rar% echo   压缩文件密码:%pwd%(请牢记!) echo     搜索盘符:%drive% echo     备份日志:%file.log% echo.&echo 请牢记密码,按任意键继续... if /i "%~1"=="/hidden" goto start pause>nul :start echo. echo 载入配置完成,正在设置程序运行环境... set path=%path%;%~dp0 setlocal enabledelayedexpansion call :deltmp if exist %file.log% del /f /q %file.log%>nul if not exist %file.rar% md %file.rar%>nul cd /d %file.rar%>nul echo. echo 删除临时文件完成,正在查找压缩程序RAR.EXE... set rar.exe="%~dp0rar.exe" if not exist %rar.exe% set rar.exe="c:\program files\winrar\rar.exe" if not exist %rar.exe% set rar.exe="d:\program files\winrar\rar.exe" if not exist %rar.exe% ( for %%a in (%drive%) do ( if exist %%a: ( for /f "delims=" %%b in ('dir /s /b /a-d "%%a:\rar.exe" 2^>nul') do ( if not "%%b"=="" ( set "rar.exe=%%~sb" ))))) if not exist %rar.exe% ( cls title 出错 echo. echo 在磁盘%drive%均未找到文件rar.exe! echo. echo 备份无法进行!按任意键退出... if /i "%~1"=="/hidden" exit pause>nul exit ) echo. echo 找到以下RAR.EXE:%rar.exe% echo. echo 初始化完成... call :vbs1 1 rem 以下代码针对QQ2009版及早期版本; cls title 正在搜索QQ2009及更低版本QQ的用户数据存放目录,请稍候... echo. echo 正在搜索QQ2009版或更低版本的QQ用户资料存放目录,请稍候... echo. set num1=0 for %%a in (%drive%) do ( for /f "delims=" %%b in ('dir /s /b /a-d "%%a:\qq.exe" 2^>nul') do ( if not "%%b"=="" ( if exist "%%~dpbNEWFACE" ( set /a num1+=1 ECHO. echo 找到了第!num1!个QQ2009或更低QQ版本! echo ________________________________________________________________________________ echo 安装路径:%%~dpb echo QQ.exe路径:%%b rem 写入备份日志; ( echo. echo 第!num1!个QQ2009或更低版本QQ.EXE ECHO 目录位置:%%b )>>%file.log% ( rem {写入要打包的文件; rem 添加要保存的文件名或目录,如.db数据库文件; rem 格式:echo %~dp0文件/目录名;文件/目录名支;持通配符?和*。 echo %%~dpbAutoLogin.dat echo %%~dpbLoginUinList.dat echo %%~dpbexstatcount.dat echo %%~dpbQQGlobal.db echo %%~dpbQQlog.txl echo %%~dpbQQ.tlg echo %%~dpbdlg.0 rem 添加不能超过此行!} )>>%lst1% rem 显示登陆过的QQ号码; set num2=0 echo. echo 该路径下登陆过的QQ号码有: echo. for /f "delims=" %%c in ('dir /s /b /ad "%%~dpb" 2^>nul') do ( if not "%%c"=="" ( if exist "%%c\msgex.db" ( set /a num2+=1 echo %%c>>%lst1% echo QQ!num2!:%%~nc ( rem {用户目录要排除的文件; rem 添加用户目录下不保存的文件名或目录,如自定义头像等无用信息。 rem 格式:echo %%c\文件/目录名;文件/目录名;支持通配符?和*。 echo %%c\QQPetFile echo %%c\UserHead echo %%c\QInterLive echo %%c\QQSpaceFile echo %%c\temp echo %%c\spf echo %%c\CacheFolder echo %%c\PanelData echo %%c\QQPhoto echo %%c\Temp echo %%c\FlashScene rem 添加不能超过此行!} )>>%lst2% ) ) ) if "!num2!"=="0" ( echo 该目录下没有登陆过的QQ记录... echo 该版本未登陆过QQ号码。>>%file.log% ) else ( ECHO 该位置/版本共登陆过 !num2! 个QQ号码。>>%file.log% ) call :text "QQ2009或更低QQ版本" "%%b" call :dosrar "%file.rar%QQBACKUP_QQ2009_!num1!.RAR" ) ) ) ) if "%num1%"=="0" ( echo 未找到QQ2009或更低QQ版本的QQ用户资料... echo 未找到QQ2009或更低QQ版本的QQ用户资料。>>%file.log% ) call :vbs1 2 cls title 正在搜索QQ2010及更高版本QQ的用户数据存放目录,请稍候... echo. echo 正在搜索QQ2010版或更高版本的QQ用户资料存放目录,请稍候... echo. set num1=0 for %%a in (%drive%) do ( for /f "delims=" %%b in ('dir /s /b /ad "%%a:\all users" 2^>nul') do ( if exist "%%b\qq\misc" ( if exist "%%b\qq\Registry.db" ( set /a num1+=1 echo ________________________________________________________________________________ echo 找到了第!num1!个QQ用户文件存放路径:%%~dpb ( rem 备份日志 echo. echo 第!num1!个用户数据存放目录 echo 版本:QQ2010或更高 ECHO 目录位置:%%b\ )>>%file.log% ( rem {写入要打包的文件; rem 添加要保存的文件名或目录,如DLL扩展文件; rem 格式:echo %~dp0文件/目录名;文件/目录名支持通配符?和*。 echo %%b rem 添加不能超过此行!} )>>%lst1% rem 登陆过的QQ号码; set num2=0 echo. echo 该路径下登陆过的QQ号码有: echo. for /f "delims=" %%c in ('dir /s /b /ad "%%~dpb" 2^>nul') do ( if not "%%c"=="" ( if exist "%%c\CustomFace.db" ( set /a num2+=1 echo QQ!num2!:%%~nc ( rem {写入要打包的文件; rem 添加要保存的文件名或目录,如DLL扩展文件; rem 格式:echo %~dp0文件/目录名;文件/目录名支持通配符?和*。 echo %%c rem 添加不能超过此行!} )>>%lst1% ( rem {写入要排除的文件; rem 添加用户目录下不保存的文件名或目录,如自定义头像等无用信息。 rem 格式:echo %%c\文件/目录名;文件/目录名支持通配符?和*。 echo %%c\QQPetFile echo %%c\UserHead echo %%c\QInterLive echo %%c\QQSpaceFile echo %%c\temp rem 添加不能超过此行!} )>>%lst2% ) ) ) if "!num2!"=="0" ( echo 该目录下没有登陆过的QQ记录... echo 该版本未登陆过QQ号码。>>%file.log% ) else ( ECHO 该位置/版本共登陆过 !num2! 个QQ号码。>>%file.log% ) call :text "QQ2010或更高QQ版本" "%%~dpb" call :dosrar "%file.rar%QQBACKUP_USERDATA_!num1!_%time:~-5%.RAR" ) ) ) ) if "%num1%"=="0" ( echo 未找到QQ2010或更高QQ版本的QQ用户资料... echo 未找到QQ2010或更高QQ版本的QQ用户资料。>>%file.log% ) call :vbs1 2 cls title 正在搜索QQ2010及更高版本的QQ.EXE,请稍候... echo. echo 正在搜索QQ2010版或更高版本的QQ安装路径及存放用户资料的目录,请稍候... echo. set num1=0 for %%a in (%drive%) do ( for /f "delims=" %%b in ('dir /s /b /ad "%%a:\bin" 2^>nul') do ( if exist "%%b\qq.exe" ( if exist "%%~dpb\misc" ( set /a num1+=1 ECHO. echo 找到了第!num1!个QQ2010或更高QQ版本 echo ________________________________________________________________________________ echo 安装目录:%%~dpb echo QQ.exe路径:%%b\qq.exe ( rem 备份日志 echo. echo 第!num1!个QQ2010或更高版本QQ.EXE ECHO 安装路径:%%b\qq.exe )>>%file.log% ( rem {写入要打包的文件; rem 添加要保存的文件名或目录,如dat配置; rem 格式:echo %%~b\文件/目录名;文件/目录名支持通配符?和*。 echo %%~b\*.dat echo %%~b\*.xml echo %%~b\QQ.exe rem 添加不能超过此行!} )>>%lst1% ( rem {用户目录要排除的文件; rem 添加用户目录下不保存的文件名或目录,如自定义头像等无用信息。 rem QQ格式:echo %%~b\文件/目录名;文件/目录名支持通配符?和*。 echo %%~b\*.dll echo %%~b\UserHead\ echo %%~b\QInterLive\ echo %%~b\QQSpaceFile\ echo %%~b\temp\ echo %%~b\spf\ echo %%~b\CacheFolder\ echo %%~b\PanelData\ echo %%~b\QQPhoto\ echo %%~b\Temp\ echo %%~b\FlashScene\ rem 添加不能超过此行!} )>>%lst2% call :text "QQ2010或更高QQ版本" "%%b\qq.exe" call :dosrar "%file.rar%QQBACKUP_2010_!num1!_%time:~-5%.RAR" ) ) ) ) if "%num1%"=="0" echo 未找到安装QQ2010或更高QQ版本... call :vbs1 2 cls title 操作完成 echo. echo 程序已经对本机上的所有QQ安装路径及设置进行了备份,本次备份结果如下: echo. echo ________________________________________________________________________________ type %file.log% echo. echo ________________________________________________________________________________ echo 备份文件位于%file.rar%,按任意键打开以上目录。 if /i "%~1"=="/hidden" exit pause>nul start /max explorer.exe %file.rar% exit :text if not exist %lst1% ( call :deltmp goto :eof ) title 正在生成压缩包注释文件,请稍候。。。 ( echo.备份时间:%date%;备份时间:%time%; echo. echo 版本:%~1 echo QQ.EXE路径/数据存放路径:%~2; echo. echo #-本次备份了安装目录中的以下文件/目录: echo. if exist %lst1% type %lst1% echo. echo #-本次压缩备份不包括以下文件/目录: echo. if exist %lst2% type %lst2% echo. echo #-以下为本机变量: echo. set echo. echo ===以上信息由 冷眼看客·QQ备份器 生成=== )>%text% goto :eof :dosrar if not exist %lst1% goto :eof title 正在压缩,请稍候... echo ________________________________________________________________________________ echo 正在打包以上数据,此过程可能需要较长一段时间,请耐心等候... %RAR.exe% a %~1 @%lst1% -ed -ep1 -hp%pwd% -m5 -X@%lst2% -c -z%text% >nul call :deltmp cls goto :eof :deltmp if exist %lst1% del %lst1% /f /q if exist %lst2% del %lst2% /f /q if exist %text% del %text% /f /q if exist %lst1% del %lst1% /f /q goto :eof :vbs1 echo WScript.Sleep %~1000>"%temp%\vbs1.vbs" call "%temp%\vbs1.vbs" goto :eof :help cls&title 帮助 call :version echo. echo 用法: BACKUP_TECENT [? ^| help ^| /cfg ^|/hidden^|...] echo. echo 没有参数 转换字符串 echo ? 显示此帮助信息 echo help 显示此帮助信息(与 ?相同) echo /cfg 在程序所在目录生成默认配置文件baktec.cfg echo /hidden 以无界面模式运行,需提前设置好各项参数 echo 其它非空参数 以/hidden参数重启进入后台运行,需提前设置好各项参数 echo. echo 本程序具有以下功能: echo. echo 1.自动从设定磁盘中搜索RAR.EXE,然后搜索登陆过的qq数据,打包至设定的目录。 echo. echo 2.本程序支持参数启动,使用参数时请先阅读帮助信息。 echo. echo 3.将其它图标拖放到本文件图标时,程序自动后台备份。 echo. echo 按任意键关闭此窗口。 pause>nul goto :eof exit :version echo. echo QQ / TM 备 份 器 echo. echo [版本:V1.0.0.1 ^| 更新日期:2010.10.09] echo. echo 版权所有 (c) ?-2010 冷眼看客 echo. echo 联系方式:[QQ - 421382690 ^| E-MAIL - xaoheter@163.com] echo. echo 程序使用须知: echo. echo 1.修改后的版本须保持原作者LOGO。 echo. echo 2.修改后的版本传播发行前须经通知原作者。 echo. echo 3.本程序不得用于非法用途! goto :eof :crcfg cls&title 新建配置文件... if exist baktec.cfg ( echo.&echo 程序所在目录内已经存在配置文件baktec.cfg。 ren baktec.cfg baktec.cfg.bak>nul && ( echo.&echo 程序已经备份当前配置为baktec.cfg.bak; ) ) echo.&echo 正在生成默认配置文件baktec.cfg,请稍候... ( echo ;严格按说明修改此配制文件,否则将引起程序主程序报错无法使用! echo ;如果此文件名被改,请改回"baktec.cfg",否则主程序无法使用! echo ; echo ;压缩文件存放目录,路径不得含有空格字符,目录路径必须以斜杠字符“\”结尾! echo file.rar=%~dp0 echo ; echo ;压缩文件密码(请务必牢记); echo pwd=BACKUP_TECENT echo ; echo ;设置搜索盘符,用空格隔开; echo drive=c d e f echo ; echo ;备份日志存放路径; echo file.log=%~dp0QQ备份日志.log echo ; echo ;压缩文件注释(如非必要请勿修改); echo text=%temp%\text.tmp echo ; echo ;压缩的文件列表(如非必要请勿修改); echo lst1=%temp%\list1.tmp echo ; echo ;不压缩的文件列表(如非必要请勿修改); echo lst2=%temp%\list2.tmp echo ; echo ;设置为1时程序在读取配置完成后立即删除配置文件,其它值不处理; echo delcfg= echo ; echo ;验证配置文件是否正确,必须设置值为1,其它值时配置无效; echo val= echo ; echo ;请按配置说明修改本文件,必要时请自行保存副本! echo ;配置结束 )>"%~dp0baktec.cfg" echo. echo 配置文件已生成,请按说明配置。 call :vbs1 1 start /max /wait notepad.exe "%~dp0baktec.cfg" CLS echo. start %~s0 exit REM 更新记录 10.07.06,修正排版位置; 10.10.08,修正排版位置及日志输出BUG; 添加vbs延时代码,及VBS隐藏运行功能; 10.10.09 添加自定义配置代码及关于信息排版;

作者: ql1307096     时间: 2010-10-11 10:44
非常好,学习了,要是再有个备份qq2010的就好了

作者: fq3803     时间: 2010-10-11 21:06
这个工具非常好啊,下来看看

作者: xaoheter     时间: 2010-10-12 10:53
这个本来就可以备份2010的啊,