标题: [注册表类] 【已解决】请问如何查找注册表内的关键字并以此判断程序是否在运行 [打印本页]
作者: solan 时间: 2015-11-21 10:44 标题: 【已解决】请问如何查找注册表内的关键字并以此判断程序是否在运行
本帖最后由 solan 于 2015-11-21 14:50 编辑
某软件的某个版本运行时在注册表内即时产生如下条目:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\KL\Running Applications]
"KL V26.5 1"=dword:0000c43a
"KL V26.5 2"=dword:0000d4c4
也就是关键字是KL V26.5,后面是序列号,表示同时运行了几个软件,
那么请问如何查找注册表内的关键字KL V26.5并以此判断程序是否在运行呢?
拜托各位说说这个批处理怎么写?谢谢!
作者: solan 时间: 2015-11-21 13:20
本帖最后由 solan 于 2015-11-21 13:24 编辑
如果这样写,查不到- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY Administrator POWERD BY iBAT
- REG QUERY "HKCU\Software\KL\Running Applications" /v "KL V26.5" && @echo KL8.5正在运行。。。
- pause
复制代码
如果下面这样写,那么当关掉第一个打开的软件窗口的时候,也就是没有KL V26.5 1这个值了,但是此时可能有KL V26.5 2或者KL V26.5 3等等,
由于查不到KL V26.5 2或KL V26.5 3等等,就提示软件没在运行,其实在运行呢。- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY Administrator POWERD BY iBAT
- REG QUERY "HKCU\Software\KL\Running Applications" /v "KL V26.5 1" && @echo KL8.5正在运行。。。
- pause
复制代码
难不成我要把所有的值都写上吗?如果打开了100个KL8.5软件的窗口,那我岂不是要写到KL V26.5 100了吗?
此处不明,请版主指点一二!!
作者: WHY 时间: 2015-11-21 13:59
- @echo off
- set "s=HKCU\Software\KL\Running Applications"
- for /f %%i in ('reg query "%s%"^|findstr /i /r /c:"^ *KL V26\.5 [0-9][0-9]*"^|find /c /v ""')do (
- echo 有 %%i 个程序在运行
- )
- pause
复制代码
作者: solan 时间: 2015-11-21 14:45
回复 3# WHY
非常感谢,测试成功
作者: solan 时间: 2015-11-21 14:48
本帖最后由 solan 于 2015-11-21 15:36 编辑
不过我不懂括号里面的意思,在哪儿可以学到这些,如果方便的话,请指引一下
作者: WHY 时间: 2015-11-21 15:32
回复 5# solan
建议你学一下 FOR 和 FINDSTR 的用法,搜索本论坛即可得到教程
括弧里的意思是,reg query 的结果通过管道符“|”传给 findstr,findstr 找到以空格开头、后面接 KL V26.5 和数字的行,再通过管道传给 FIND 来统计行数
作者: solan 时间: 2015-11-21 15:35
好复杂,一时搞不明白,去搜索看看,再次感谢,你太给力了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |