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