Board logo

标题: 怎么用reg export 截取QQ路径 [打印本页]

作者: kidzgy     时间: 2008-5-24 19:53    标题: 怎么用reg export 截取QQ路径
本来用QQ登录的话,HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ 的Install项的值就会是QQ的路径。 例如我的是 如果用reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ" 1.reg 导出用记事本打开后是 (我的机子而言)
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ] "Install"="E:\\QQ\\" "Uindata"=dword:483857e3
意思写明白点: 如何把1.reg中的 以开头为"Install"= 那项值取出来,并作为变量。(方便下文使用的变量) 要求取出来的值不包括双引号。就是路径。如 E:\\QQ\\

作者: pooronce     时间: 2008-5-24 20:37
用不着reg export,直接reg query套在for里面就行了:
for /f "tokens=3" %i in ('reg query HKLM\Software\Tencent\QQ /v Install^|find "Install"') do @echo %i
如果一定要export后再分析文件的话 就
for /f "tokens=2 delims==" %i in ('findstr "Install" 1.reg') do @echo %~i

作者: kidzgy     时间: 2008-5-25 07:36
谢谢~~不过你的 %i 是不是要改为%%i呢,不然运行不了呢

作者: HAT     时间: 2008-5-25 08:23
QQ安装路径有空格的时候,2楼的代码会出错。

作者: pooronce     时间: 2008-5-25 09:24
%i和%%的變化i既然知道,就用不著提了 對應有空格的,在最後要用的%i上套上引號就行了

作者: HAT     时间: 2008-5-25 09:47
Originally posted by pooronce at 2008-5-25 09:24 AM: %i和%%的變化i既然知道,就用不著提了 對應有空格的,在最後要用的%i上套上引號就行了
问题不出在最后那个%i上面,而是你提取那一列的问题。

作者: pooronce     时间: 2008-5-25 10:19
哦,对啊,倒没想到。 刚刚检测确定了一下,中间两个是TAB的,这样就好办多了
for /f "tokens=3 delims=	" %i in ('reg query HKLM\Software\Tencent\QQ /v Install^|find "Install"') do @echo "%i"

作者: kidzgy     时间: 2008-5-26 11:43
不行。运行不了。运行会出错 能不能万能一点儿,不管有没有空格,而且生成的路径前后不包括双引号的呢。

作者: HAT     时间: 2008-5-26 12:26
Originally posted by kidzgy at 2008-5-26 11:43 AM: 不行。运行不了。运行会出错 能不能万能一点儿,不管有没有空格,而且生成的路径前后不包括双引号的呢。
因为论坛会把tab键转换为空格,你拷贝7楼的代码后,自行把delims设置为tab键就行了。

作者: HAT     时间: 2008-5-26 12:28
这样也可以:
@echo off
for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ /v Install') do (
  set QQPathL=%%a
  set QQPathR=%%b
)
set QQPath=%QQPathL:~-1%:%QQPathR%
echo %QQPath%

作者: tao0610     时间: 2008-5-26 13:47
for /f "tokens=2*" %a in ('reg query HKLM\Software\Tencent\QQ /v Install^|find "Install"') do echo %b

作者: kidzgy     时间: 2008-5-26 16:21
Originally posted by HAT at 2008-5-26 12:28 PM: 这样也可以: [CODE]@echo off for /f "skip=4 tokens=1,2 delims=:" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ /v Install') do ( set QQPathL=%%a set QQPathR=%% ...
这个自己知道的了,可是我的问题是用reg export 取出来喔~ 我想多掌握点知识。

作者: HAT     时间: 2008-5-26 16:45
Originally posted by kidzgy at 2008-5-26 04:21 PM: 这个自己知道的了,可是我的问题是用reg export 取出来喔~ 我想多掌握点知识。
@echo off
for /f "tokens=2 delims==" %%a in ('findstr /i "Install" "C:\test\1.reg"') do set qqpath=%%a
set qqpath=%qqpath:"=%
echo %qqpath%

作者: kidzgy     时间: 2008-5-26 18:39
不行,得出的是 "=

作者: HAT     时间: 2008-5-26 19:20
是编码的原因吧,reg export导出的1.reg文件是UNICODE编码,建议放弃这个方法。

作者: logopc     时间: 2008-5-27 13:44
这样也行,都是高手啊!佩服

作者: kidzgy     时间: 2008-5-27 17:35
既然不行的话,那就只能用老方法了。真谢谢了。

作者: 20080610     时间: 2008-5-27 18:28
@echo off
reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ" 1.reg >nul
for /f "tokens=2 delims==" %%. in ('find/i "install" 1.reg') do set str=%%~.
echo %str%
pause>nul

作者: yjq635     时间: 2008-5-27 20:34
用VBS吧,, Set yjq = CreateObject("WScript.Shell") QQPath = Shilyx.RegRead("HKLM\SOFTWARE\Tencent\QQ\Install") yjq.Run """" & QQPath & "\QQ.exe"" /START,,,,,,,,,,,

作者: lovelymorning     时间: 2008-5-27 22:23
reg export 导出的是 unicod 编码,for读不了,但type却可以 所以,用type把导出的内容定向到另一个文件中,再用for来截取路径即可
@echo off
reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Tencent\QQ" 1.reg >nul
type 1.reg>>11.reg
del /q 1.reg
for /f "skip=2 tokens=2 delims==" %%i in ('find "Install" 11.reg') do echo %%i
del /q 11.reg
pause

作者: kidzgy     时间: 2008-5-28 16:25
18楼的确实可以,真行。 20楼的也不甘示弱,不过生成的前后有双引号。