中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论]初学批处理写了个备份本地QQ数据,请高手指点。
作者:
标题: [讨论]初学批处理写了个备份本地QQ数据,请高手指点。 上一主题 | 下一主题
zmt1982
初级用户





积分 51
发帖 20
注册 2007-5-25
状态 离线
『楼 主』:  [讨论]初学批处理写了个备份本地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 ]

   此帖被 +3 点积分     点击查看详情   
评分人:【 zhoushijay 分数: +1  时间:2007-5-25 18:25
评分人:【 546474 分数: +2  时间:2007-5-25 19:19


2007-5-25 17:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 2 楼』:  

有2个点要说:
1,WINRAR A 命令不知道能否添加,如果不能的话可能新生成的RAR文件会替换前面的,我的系统上的帮助显示不了,所以我不确定!
2,QQ路劲直接从注册表读取比较好,全盘搜索需要一些时间.



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-25 18:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jy531320
新手上路





积分 12
发帖 5
注册 2007-3-2
状态 离线
『第 3 楼』:  

FOR语句上有错误。
肯定不行的。

2007-5-25 18:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 4 楼』:  

FOR语句没有错误,自己测试了一下可以的

[ Last edited by zhoushijay on 2007-5-25 at 06:29 PM ]



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-25 18:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 5 楼』:  

收回刚才第1点,原来LZ是把整个号码文件夹压缩了,这样的话不管 winrar a 命令能否添加,覆盖前面的RAR文件也是没关系的



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-25 18:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
546474
中级用户





积分 247
发帖 123
注册 2007-4-17
状态 离线
『第 6 楼』:  

你很强的。

2007-5-25 19:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zmt1982
初级用户





积分 51
发帖 20
注册 2007-5-25
状态 离线
『第 7 楼』:  

还有一点,就是号码列表会出来一个为0的号码
怎样才可以把这个号码屏蔽,我试着把0-9改成1-9,但是这样有很多号码显示不出来。

2007-5-25 19:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zmt1982
初级用户





积分 51
发帖 20
注册 2007-5-25
状态 离线
『第 8 楼』:  

TO:zhoushijay

从注册表读取有点不好,有些QQ都不是安装的,直接复制就用,这样就很难找到了。
我测试了很多次,直接搜索速度也不是太慢,第一次大约5秒左右就可以了。

第二次,1-2秒就可以了。

[ Last edited by zmt1982 on 2007-5-25 at 07:58 PM ]

2007-5-25 19:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhoushijay
高级用户

Autowalk


积分 845
发帖 375
注册 2007-3-3
状态 离线
『第 9 楼』:  

直接复制的QQ似乎不能使用吧



你好,脚本专家!
<a target=blank href=tencent://message/?uin=29654761&Site=www.111.com&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:29654761:5 alt="点击这里给我发消息"></a>
2007-5-28 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: