|
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 ]
|
|
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
状态 离线
|
|
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 |
|