[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络工具] 批处理获取QQ路径、自动登录QQ小结及讨论(20160105)

自动获取QQ路径的几种方法:读注册表、全盘搜索、获取进程信息等:
  1. @echo off
  2. REM 使用ftype获取QQ路径
  3. for /f "tokens=1* delims==" %%a in ('ftype Tencent') do (
  4.     set FilePath=%%~dpbQQ.exe
  5. )
  6. echo %FilePath%
  7. pause
复制代码
  1. @echo off
  2. REM 使用WMIC获取进程信息中的QQ路径(要求QQ处于运行状态)
  3. for /f "tokens=2 delims==" %%a in ('wmic process where "name='qq.exe'" get executablepath /value') do (
  4.     set FilePath=%%a
  5. )
  6. echo %FilePath%
  7. pause
复制代码
  1. @echo off
  2. REM 使用WMIC全盘搜索获取QQ路径
  3. for /f "skip=1 delims=" %%a in ('wmic datafile where "filename='qq' and extension='exe'" get name') do (
  4.     set FilePath=%%a
  5. )
  6. echo %FilePath%
  7. pause
复制代码
  1. @echo off
  2. REM 使用reg query命令读注册表获取QQ路径
  3. for /f "tokens=2*" %%a in ('reg query HKEY_LOCAL_MACHINE\Software\Tencent\QQ /v Install^|findstr "Install"') do (
  4.     set FilePath=%%b
  5. )
  6. echo %FilePath%
  7. pause
复制代码
  1. @echo off
  2. REM 使用reg export命令到处注册表项再搜索获取QQ路径以避免reg query可能存在的吃中文字符的问题
  3. reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ" "%temp%\qq.txt">nul
  4. for /f "tokens=2 delims==" %%a in ('type "%temp%\qq.txt"^|findstr /i "Install"') do (
  5.     REM 可以用 %%~fa 直接把字符串中的\\变成\
  6.     set FilePath=%%~a
  7. )
  8. set FilePath=%FilePath:\\=\%
  9. echo %FilePath%
  10. pause
复制代码
  1. @echo off
  2. REM 调用VBS读注册表获取QQ路径
  3. >"%temp%\my.vbs" echo Set WshShell = WScript.CreateObject("WScript.Shell")
  4. >>"%temp%\my.vbs" echo WScript.Echo WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ\Install")
  5. for /f "delims=" %%a in ('cscript /nologo "%temp%\my.vbs"') do (
  6.     set FilePath=%%a
  7. )
  8. echo %FilePath%
  9. pause
复制代码
  1. @echo off
  2. REM 全盘搜索获取QQ路径
  3. set fName=qq.exe
  4. for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  5.     if exist %%a:\nul (
  6.         pushd %%a:\
  7.         for /r %%b in (%fName%?) do (
  8.             if /i "%%~nxb" equ "%fName%" (
  9.                 set FilePath=%%b
  10.                 goto :show
  11.             )
  12.         )
  13.         popd
  14.     )
  15. )
  16. :show
  17. echo %FilePath%
  18. pause
复制代码
从2009开始QQ不再支持命令行方式登录,请尝试发送按键的方式。

VBS发送按键自动登录QQ
http://bbs.bathome.net/thread-7893-1-1.html

AutoIt版QQ登录器
http://bbs.bathome.net/thread-2789-1-1.html

===================================================================================

原理及使用方法:
  1. start "" "C:\Program Files\Tencent\QQ\qq.exe" /start QQUIN:843875648 PWDHASH:4Z1c1a8DeNoF9j+JHHRnrw== /stat:40
复制代码
10:上线登陆
40:隐身登陆
41:上线登陆
QQUIN和PWDHASH必须使用大写字母

原理:QQ在传输密码的时候,先做一次MD5加密,再做一次BASE64变换,这样可以得到正常的文本信息以便网络传输。找一个MD5在线查询的网站(比如http://www.xmd5.org/),输入QQ密码的明文,转换得到MD5加密的结果,再找一个BASE64在线查询的网站(比如http://www.waishi.net/ip/tools/base64.htm),输入刚才得到的MD5加密的结果,转换得到HASH编码即可。

使用VBS的SendKeys方法自动登录,因无法保证获取正确的交单,存在风险,因此不予考虑。

经测试,目前无法用这个方法登陆最新的QQ2009正式版,可能是新版的QQ未开启这个命令行接口吧,只能继续期待以后的版本了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

QQ密码转PwdHash
需要第三方命令行工具MD5.exe和Base64.exe
下载地址:http://bbs.bathome.net/thread-3981-1-1.html
  1. @echo %dbg% off   &&   setlocal   &&   chcp 437|graftabl 936>nul   &&   set /p var=字符串:
  2. for /f %%. in ('md5 -d%var%') do set "var=%%."
  3. :toSplit
  4.    if [%a%]==[32] (goto :toBase64) else (call call set "str=%str% %%var:~%a%,2%%" && set /a a+=2)
  5.    goto :toSplit
  6. :toBase64
  7.    echo exit|%ComSpec%/kprompt e 100 %str% $_rcx$_10$_n tmp.tmp$_w$_q$_|debug>nul
  8.    for /f %%. in ('type tmp.tmp^|base64') do ( set "base64=%%." )
  9.    echo.&echo PwdHash码: %base64%   &&   del tmp.tmp >nul 2>nul
复制代码
批处理版Base64编码运算,直接将代码拷过来改下,测试成功。只用到MD5.exe
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set B64CODE=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
  4. set/p str=请输入密码:
  5. for /f %%i in ('md5 -d%str%') do set "strhex=%%i"
  6. :encloop
  7. if not defined strhex goto :encbreak
  8. set chr1=0x!strhex:~0,2!
  9. set chr2=0x!strhex:~2,2!
  10. set chr3=0x!strhex:~4,2!
  11. set strhex=%strhex:~6%
  12. for %%i in (chr1 chr2 chr3) do if "!%%i!"=="0x" set %%i=0
  13. set/a enc1=%chr1%">>"2
  14. set/a enc2=((%chr1%"&"3)"<<"4)"|"(%chr2%">>"4)
  15. set/a enc3=((%chr2%"&"15)"<<"2)"|"(%chr3%">>"6)
  16. set/a enc4=%chr3%"&"63
  17. if %chr3% equ 0 if %chr2% equ 0 (set enc4=64& set enc3=64) else (set enc4=64)
  18. set encstr=!encstr!!B64CODE:~%enc1%,1!!B64CODE:~%enc2%,1!!B64CODE:~%enc3%,1!!B64CODE:~%enc4%,1!
  19. goto :encloop
  20. :encbreak
  21. echo QQPwdHash:[%encstr%]
复制代码
MD5.vbs 链接: https://pan.baidu.com/s/1px3Xf8h4pCrJQiEDWdwZ6Q?pwd=xmm2

MD5.hta 链接: https://pan.baidu.com/s/1e0F088Xpz-CSMOVRwq8Qaw?pwd=5zvv

PWDHASH.vbs本地下载:http://www.bathome.net/viewthread.php?tid=1774#pid9805

PWDHASH.htm(javascript)链接: https://pan.baidu.com/s/1e0F088Xpz-CSMOVRwq8Qaw?pwd=5zvv

原文地址:
http://www.cn-dos.net/forum/viewthread.php?tid=27000
http://www.cn-dos.net/forum/viewthread.php?tid=36823
http://www.cn-dos.net/forum/viewthread.php?tid=29795&page=2
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

批处理获取本机正在运行的QQ的号码
原文地址:http://www.cn-dos.net/forum/view ... mp;page=2#pid308613
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 请根据QQ实际路径进行修改或者自行添加自动获取QQ路径的功能模块
  4. rem 自动获取QQ路径的几种方法:读注册表、全盘搜索、获取进程信息等
  5. set QQPath=C:\Program Files\Tencent\QQ\
  6. tasklist /nh /fi "imagename eq QQ.exe" 2>nul|findstr /i "QQ.exe">nul||goto :NoQQ
  7. for /f %%a in ('dir /b /ad /o-d "%QQPath%"^|findstr "^[1-9][0-9]*$"') do (
  8.   for /f "delims=" %%h in ('dir /s /b "%QQPath%%%a\qqstatcount.dat"') do (
  9.     set LastModify=%%~th
  10.     rem 如果某个在线的QQ长期不活动,可能无法获得其号码。
  11.     if "!LastModify:~0,13!"=="!date:~0,10! !time:~0,2!" (
  12.       echo 本机正在运行的QQ号:%%a [!LastModify!]
  13.     )
  14.   )
  15. )
  16. goto :end
  17. :NoQQ
  18. echo 本机没有QQ在运行
  19. :end
  20. pause
复制代码
批处理自动获取最快速的QQ服务器
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=40395
  1. @echo off
  2. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz.tencent.com') do echo %%c >"QQlist.txt"
  3. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz1.tencent.com') do echo %%c >>"QQlist.txt"
  4. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz2.tencent.com') do echo %%c >>"QQlist.txt"
  5. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz3.tencent.com') do echo %%c >>"QQlist.txt"
  6. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz4.tencent.com') do echo %%c >>"QQlist.txt"
  7. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz5.tencent.com') do echo %%c >>"QQlist.txt"
  8. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz6.tencent.com') do echo %%c >>"QQlist.txt"
  9. for /f "skip=3 tokens=1-3" %%a in ('ping -n 1 -l 1 sz7.tencent.com') do echo %%c >>"QQlist.txt"
  10. set MinL=99
  11. set MinT=9999ms
  12. set Best=""
  13. for /f "usebackq" %%a in ("QQlist.txt") do (
  14.   call :time %%a
  15. )
  16. echo 最佳服务器:%Best%
  17. echo 最佳服务器的响应时间:%MinT%
  18. goto :eof
  19. :time
  20. for /f "skip=11 tokens=4 delims==" %%a in ('ping %1') do (
  21.   if "%%a" equ "  0ms" (
  22.     set /a Best=%1
  23.   ) else (
  24.     call :best %%a %1
  25.   )
  26.   goto :eof
  27. )
  28. :best
  29. for /f "skip=1 delims=:" %%a in ('^(echo %1^&echo.^)^|findstr /o ".*"') do set nowlen=%%a
  30. if "%nowlen%" lss "%MinL%" (
  31.   set /a MinL=%nowlen%
  32.   set MinT=%1
  33.   set Best=%2
  34. ) else if "%nowlen%" equ "%MinL%" (
  35.   if "%1" lss "%MinT%" (
  36.     set MinT=%1
  37.     set Best=%2
  38.   )
  39. )
  40. goto :eof
复制代码
  1. @echo off&setlocal enabledelayedexpansion
  2. echo 请稍候......
  3. for /f "delims=" %%a in ('more +16 "%~0"') do (
  4.      set tx=%%a&set var=
  5.      for /f "tokens=1-4 delims=[]=" %%i in ('ping %%a^|findstr /i "%%a Average"') do call:LP "%%j" "%%l")
  6.      for /f "tokens=1,2 delims=-=0" %%i in ('set -') do echo 最快服务器:%%j IP地址:!%%j! 响应时间%%i&goto end
  7. :end
  8. pause&exit
  9. :LP
  10. if not defined var set var=%~1
  11.    if not %2=="" (
  12.    set str=%~2&set str=!str: =!
  13.    set str=00000000!str!&set str=!str:~-10!
  14.    set -!str!=%TX%&set %TX%=!var!
  15. )
  16. goto :eof
  17. sz.tencent.com
  18. sz1.tencent.com
  19. sz2.tencent.com
  20. sz3.tencent.com
  21. sz4.tencent.com
  22. sz5.tencent.com
  23. sz6.tencent.com
  24. sz7.tencent.com
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本论坛批处理登录QQ相关讨论

多QQ自动登陆(PWDHASH)
http://bbs.bathome.net/viewthread.php?tid=750

CMD批处理做Base64编码运算理论原型
http://bbs.bathome.net/viewthread.php?tid=587

16进制数用base64编码批处理版
http://bbs.bathome.net/viewthread.php?tid=3421
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

· 可以用 %%~fa 把字符串中的“\\”变成“\”。

· if exist %%a:\nul,这个 nul 有什么作用?

· 我觉得用 for %%a in (qq.exe?) do if /i "%%~nxa"=="qq.exe" 代替 *.exe 好一点。
1

评分人数

TOP

回复 5楼 的帖子

1、已更新到顶楼
2、跳过光驱盘符
3、已更新到顶楼
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

原帖由 Batcher 于 2009-4-16 23:48 发表
2、跳过光驱盘符

我猜也是这个作用,但我这里测试并没有这个作用 ——
① 当光驱中没有光盘时,盘符:盘符:\nul 都不存在。
② 当光驱中有光盘时,盘符:盘符:\nul 都存在。

TOP

学习  学习!!!

TOP

学习了……好贴呀……

TOP

都是大牛!!学习中......

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. echo 请稍候......
  3. for /f "delims=" %%a in ('more +16 "%~0"') do (
  4.      set tx=%%a&set var=
  5.      for /f "tokens=1-4 delims=[]=" %%i in ('ping %%a^|findstr /i "%%a Average"') do call:LP "%%j" "%%l")
  6.      for /f "tokens=1,2 delims=-=0" %%i in ('set -') do echo 最快服务器:%%j IP地址:!%%j! 响应时间%%i&goto end
  7. :end
  8. pause&exit
  9. :LP
  10. if not defined var set var=%~1
  11.    if not %2=="" (
  12.    set str=%~2&set str=!str: =!
  13.    set str=00000000!str!&set str=!str:~-10!
  14.    set -!str!=%TX%&set %TX%=!var!
  15. )
  16. goto :eof
  17. sz.tencent.com
  18. sz1.tencent.com
  19. sz2.tencent.com
  20. sz3.tencent.com
  21. sz4.tencent.com
  22. sz5.tencent.com
  23. sz6.tencent.com
  24. sz7.tencent.com
复制代码
谁能够帮我讲解一下LP中的每行代码的意思?不懂这段的意思。

如果我想要都显示所有服务器的ping响应值,该如何修改???

TOP

那天晚上测试了一晚都失败, 后来才知道, 原来2009是不支持的,

有人测试过2009其它版本吗,  2009以下的版本都支持吗,

TOP

回复 12楼 的帖子

我测试过官方2009的所有版本,都不支持。2009以下的版本太多了,很难一一测试,至少2007、2008是可以的。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

很高兴看到这个,虽然回复的时侯看到2009不能用  0 0

TOP

能完善个2010qq登陆器吗

TOP

返回列表