@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 添加自定义配置代码及关于信息排版;