标题: [注册表类] 批处理如何读取注册表内容,弹出对话框提示? [打印本页]
作者: alpha 时间: 2010-7-9 17:46 标题: 批处理如何读取注册表内容,弹出对话框提示?
能不能实现以下功能:
如果注册表中:123\1 下面的 221213键值是:1.0 则弹出一个对话框,显示内容:您的版本为1.0
如果注册表中:123\1 下面的 221213键值是:2.0 则弹出一个对话框,显示内容:您的版本为2.0
如果不存在 123\1 注册表项, 则弹出一个对话框,显示内容:请您安装最新的版本!
如何实现
作者: sgaizxt001 时间: 2010-7-9 21:49
reg query "123\1" /v 221213
你先看看他的输出结果
作者: 基拉freedom 时间: 2010-7-9 23:10
用msg好像不能直接用参数的吧.......等等看谁会 难道又是用VBS?
作者: alpha 时间: 2010-7-9 23:38
原帖由 基拉freedom 于 2010-7-9 23:10 发表
用msg好像不能直接用参数的吧.......等等看谁会 难道又是用VBS?
嗯,就是用VBS的思路!
作者: alpha 时间: 2010-7-9 23:41
原帖由 sgaizxt001 于 2010-7-9 21:49 发表
reg query "123\1" /v 221213
你先看看他的输出结果
有什么特别之处么?
输出的内容是:-
- HKEY_LOCAL_MACHINE\SOFTWARE\123\1
- 221213 REG_SZ 1.0
复制代码
作者: sgaizxt001 时间: 2010-7-10 00:49
那这样可以不呢,你看一下,我没法实验
- @echo off
- for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213') do (
- if not "%%a"=="" (set bb=您的版本为%%a) else (set bb=请您安装最新的版本)
- )
- msg %username% %bb%
复制代码
作者: alpha 时间: 2010-7-10 09:58
感谢LS的回答,但是,有个问题,当键不存在时,并没有提示“请安装最新版本”,而是出现了如下错误提示:
错误: 系统找不到指定的注册表项或值。
输入要发送的消息;在新的一行上按 CTRL-Z 以结束消息;然后按 ENTER
作者: sgaizxt001 时间: 2010-7-10 20:31
不存在的话就是需要安装最新版本了嘛
作者: alpha 时间: 2010-7-10 21:05
原帖由 sgaizxt001 于 2010-7-10 20:31 发表
不存在的话就是需要安装最新版本了嘛
能不能也设置msg的提示?
作者: sgaizxt001 时间: 2010-7-10 21:38
@echo off
for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213 1>nul') do (
if not "%%a"=="" (set bb=您的版本为%%a) else (set bb=请您安装最新的版本)
)
msg %username% %bb%
这样看看呢,屏蔽了注册表查询不到子键的错误信息,相当于是对空行解析
作者: alpha 时间: 2010-7-10 22:11
原帖由 sgaizxt001 于 2010-7-10 21:38 发表
@echo off
for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213 1>nul') do (
if not "%%a"=="" (set bb=您的版本为%%a) else (set bb=请您安装最新的版本)
)
msg ...
这样也不行,而且,当键值存在的时候,都不能提示msg对话框了。
我看如果实在不行的话,就用VBS
[ 本帖最后由 alpha 于 2010-7-10 22:12 编辑 ]
作者: alpha 时间: 2010-7-12 18:00
继续顶起来!看看谁会!
作者: defanive 时间: 2010-7-13 22:19
- @echo off
- set bb=请您安装最新的版本
- for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213 2^>nul') do set bb=您的版本为%%a
- )
- msg %username% %bb%
复制代码
改了下10L的。。。
[ 本帖最后由 defanive 于 2010-7-13 22:25 编辑 ]
作者: neorobin 时间: 2010-7-14 01:18
- @echo off
- 2>nul >nul (
- REM 在注册表根目录以及一些近根目录下是不能创建普通项的, 例如 HKLM 下不能, 但在 HKCU 下可以创建
- reg add HKLM\software\123\1 /v 221213 /d "2.0" /f & rem 作用显示版本 2.0
- REM reg delete HKLM\software\123\1 /f & rem 作用显示安装最新版提示
- (reg query HKLM\software\123\1)&&(
- for /f "tokens=3*" %%t in ('reg query HKLM\software\123\1 /v 221213^|more +4') do echo 您的版本为 %%t|msg *
- )||(
- msg * 请您安装最新的版本!
- )
- )
- pause
复制代码
作者: jay_16 时间: 2011-4-13 21:16
14# neorobin
好强大哦
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |