中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 原创QQ/TM用户资料备份器 上一主题 | 下一主题
xaoheter
新手上路





积分 3
发帖 3
注册 2010-1-19
来自 湖南
状态 离线
『楼 主』:  原创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  添加自定义配置代码及关于信息排版;

2010-10-9 22:39
查看资料  发送邮件  发短消息 网志  OICQ (421382690)  编辑帖子  回复  引用回复
ql1307096
初级用户




积分 66
发帖 26
注册 2006-2-9
状态 离线
『第 2 楼』:  

非常好,学习了,要是再有个备份qq2010的就好了

2010-10-11 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fq3803
新手上路





积分 1
发帖 1
注册 2010-6-25
状态 离线
『第 3 楼』:  

这个工具非常好啊,下来看看

2010-10-11 21:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xaoheter
新手上路





积分 3
发帖 3
注册 2010-1-19
来自 湖南
状态 离线
『第 4 楼』:  

这个本来就可以备份2010的啊,

2010-10-12 10:53
查看资料  发送邮件  发短消息 网志  OICQ (421382690)  编辑帖子  回复  引用回复

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


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



论坛跳转: