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

导出用记事本打开后是  (我的机子而言)

  Quote:
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


  Quote:
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


  Quote:
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


  Quote:
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


  Quote:
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楼的也不甘示弱,不过生成的前后有双引号。