标题: [讨论]初学批处理写了个备份本地QQ数据,请高手指点。
[打印本页]
作者: zmt1982
时间: 2007-5-25 17:55
标题: [讨论]初学批处理写了个备份本地QQ数据,请高手指点。
我是前天才开始接触DOS的,以前不会DOS,但是自从学了一点Linux之后,发现DOS也很简单。
昨天一个同事想要备份QQ资料,所以想何不用批处理来实现,下午就开始研究批处理,晚上写到2点多,今天又优化了很多,终于写成了这个批处理,希望这里的高手多多指点:
除了那个for之外,其他都是原创。学到了很多东西
@echo off
color 2f
Title 批处理 备份恢复QQ个人设置+聊天记录 -后知后觉 QQ:272544 http://www.coos.cn
rem rarexe //定义winrar路径,一般默认
set rarexe=c:\program files\winrar\winrar.exe
echo.
echo #############################################
echo 初学批处理,学习中编写了这个简单的例子
echo 我的QQ:272544 http://www.coos.cn
echo #############################################
:cdQQ
echo.
echo.
@echo 系统正在定位您QQ的路径,请稍等……
echo.
for /f "skip=1" %%a in ('wmic logicaldisk where "DriveType=3" get caption') do (
for /f "delims=" %%_ in ('dir /s/b/a-d %%a\QQ.exe 2^>nul') do (if exist "%%_" set QQpath=%%~dp_&goto :ovv)
)
:ovv
echo.
@echo 定位完毕,您QQ的路径为: %QQpath%
:Input
@echo.
@echo 本机所有的QQ号码如下:
@echo ------------------
for /f %%i in ('dir "%QQPath%" /ad /b /w^|findstr "^[0-9]*$"') do echo %%i
@echo ------------------
echo.
set QQNumber=
set /p QQNumber=请输入您所要备份的QQ号码:
cls
echo.
if "%QQNumber%"=="" echo 你没有输入任何号码! && goto Input
echo %QQNumber%|findstr "^[0-9]*$">nul && goto dList || echo 您输入的不是一个QQ号码! && goto Input
:dList
if not exist d:\QQbak mkdir d:\QQbak
IF EXIST "%QQpath%\%QQNumber%" goto menu
goto error
:menu
cls
echo.
echo.
@echo -----------------------------------------------
@echo QQ:%QQNumber%您好!
@echo 您的QQ路径为:%QQpath%
@echo -----------------------------------------------
@echo.
@echo 1 = 备份 QQ设置+聊天记录
@echo.
@echo 2 = 恢复 QQ设置+聊天记录
@echo.
@echo 3 = 重新输入 QQ号码
@echo.
@echo Q = 取消/退出
@echo.
@echo.
set choose=
set /p choose=请选择:
if "%choose%"=="" goto menu
if "%choose%"=="1" cls && goto bak
if "%choose%"=="2" cls && goto reback
if "%choose%"=="3" cls && goto Input
if "%choose%"=="q" (goto exit) else echo ! 选择错误,请重新输入……
@echo.
pause
@echo.
goto menu
:bak
@echo ------------------------------------------------------
@echo 正在备份QQ:%QQNumber%的设置+聊天记录,请稍等...
@echo ------------------------------------------------------
%QQpath:~0,2%
cd "%QQPath%"
"%rarexe%" a d:\QQbak\%QQNumber%.rar "%QQNumber%"
@echo ---------------------------------------------------
@echo QQ:%QQNumber%的设置+聊天记录已备份至:
@echo D:\QQbak\%QQNumber%.rar
@echo ----------------------------------------------------
@echo.
pause
goto menu
:error
cls
cd d:\QQbak
@echo ---------------------------------------------------
@echo QQ号码设置错误,%QQNumber%不存在,请重新输入……
@echo ---------------------------------------------------
goto Input
:reback
if not exist d:\QQbak\%QQNumber%.rar. (
@echo !您的QQ没有备份,返回重新选择……
@echo.
pause
@echo.
goto menu
) else (
@echo ------------------------------------------------------
@echo 正在恢复QQ:%QQNumber%的设置+聊天记录,请稍等...
@echo ------------------------------------------------------
@echo.
%QQpath:~0,2%
cd "%QQPath%"
"%rarexe%" x d:\QQbak\%QQNumber%.rar "%QQPath%"
@echo.
@echo ---------------------------------------------------
@echo QQ:%QQNumber%的设置+聊天记录已恢复:
@echo ----------------------------------------------------
@echo.
pause
goto menu
)
:exit
exit
[
Last edited by zmt1982 on 2007-5-25 at 05:57 PM ]
作者: zhoushijay
时间: 2007-5-25 18:23
有2个点要说:
1,WINRAR A 命令不知道能否添加,如果不能的话可能新生成的RAR文件会替换前面的,我的系统上的帮助显示不了,所以我不确定!
2,QQ路劲直接从注册表读取比较好,全盘搜索需要一些时间.
作者: jy531320
时间: 2007-5-25 18:24
FOR语句上有错误。
肯定不行的。
作者: zhoushijay
时间: 2007-5-25 18:26
FOR语句没有错误,自己测试了一下可以的
[
Last edited by zhoushijay on 2007-5-25 at 06:29 PM ]
作者: zhoushijay
时间: 2007-5-25 18:32
收回刚才第1点,原来LZ是把整个号码文件夹压缩了,这样的话不管 winrar a 命令能否添加,覆盖前面的RAR文件也是没关系的
作者: 546474
时间: 2007-5-25 19:18
你很强的。
作者: zmt1982
时间: 2007-5-25 19:55
还有一点,就是号码列表会出来一个为0的号码
怎样才可以把这个号码屏蔽,我试着把0-9改成1-9,但是这样有很多号码显示不出来。
作者: zmt1982
时间: 2007-5-25 19:57
TO:zhoushijay
从注册表读取有点不好,有些QQ都不是安装的,直接复制就用,这样就很难找到了。
我测试了很多次,直接搜索速度也不是太慢,第一次大约5秒左右就可以了。
第二次,1-2秒就可以了。
[
Last edited by zmt1982 on 2007-5-25 at 07:58 PM ]
作者: zhoushijay
时间: 2007-5-28 18:47
直接复制的QQ似乎不能使用吧