无忧启动论坛

标题: 有没有批处理高手能帮忙写一个提取软件安装路径的批处理程序? [打印本页]

作者: semiuel    时间: 2008-1-12 10:17
标题: 有没有批处理高手能帮忙写一个提取软件安装路径的批处理程序?
举个例子,我电脑上QQ的安装信息,在注册表里导出如下:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\software\tencent\qq]
"check"=dword:43bd2764
"Install"="C:\\Program Files\\Tencent\\qq\\"
"version"="1445.110"
"Uindata"=dword:43be2f74


现在我们知道,"Install"="C:\\Program Files\\Tencent\\qq\\"这一句就是QQ的安装路径信息.
有没有什么办法把键值提取出来,然后把里面的双斜杠变成单的?
find /i "install" qq.reg >a.txt


如果能提取出C:\Program Files\Tencent\qq\,就可以赋值给变量了.
作者: semiuel    时间: 2008-1-12 10:19
@echo off
reg export HKLM\software\tencent\qq qq.reg >nul
find /i "install" qq.reg >a.tmp
del qq.reg
notepad a.tmp


请高手指教,相信很多在XP里使用批处理的朋友都需要.
作者: gtzhj    时间: 2008-1-12 13:46
@echo off
for /f "tokens=1,2,*" %%i in ('REG QUERY HKEY_LOCAL_MACHINE\software\tencent\qq /v Install') do (set "x=%%k")
echo %x%
pause
作者: semiuel    时间: 2008-1-12 16:17
谢谢楼上的高手.
解决我一个很大的问题.
作者: semiuel    时间: 2008-1-12 16:24
另外问一下,为什么要这样写?
set "x=%%k"
而前面FOR语句里是%%i
看不懂啊~~~
作者: wowfans    时间: 2008-1-12 21:18
%%i表示第一个符号
也就是Install
%%j表示第二个符号
也就是REG_SZ
%%k表示第二个符号以后的所有符号
也就是取得的路径值了

这里你只需要%%k
所以后面变量设置为%%k咯



当然
如果想简明点的
变量一致的
把tokens改一下就ok了
例如改成

@echo off
for /f "tokens=3" %%i in ('REG QUERY HKEY_LOCAL_MACHINE\software\tencent\qq /v Install') do (set "x=%%i")
echo %x%
pause
这样就容易董了吧...
作者: wowfans    时间: 2008-1-12 21:19
很随意的啦
多做比较就懂了
例如再改成
@echo off
for /f "tokens=2,3,*" %%i in ('REG QUERY HKEY_LOCAL_MACHINE\software\tencent\qq /v Install') do (set "x=%%j")
echo %x%
pause
也是一样的
作者: gtzhj    时间: 2008-1-13 13:18
wowfans兄似乎没有考虑路径值中可能有空格的情况。
作者: semiuel    时间: 2008-1-13 19:51
应该没有楼上说的这个问题.
我这个例子里,输出结果是:C:\Program Files\Tencent\qq\,中间带空格的.




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3