Board logo

标题: [注册表类] 批处理如何读取注册表内容,弹出对话框提示? [打印本页]

作者: 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
你先看看他的输出结果

有什么特别之处么?
输出的内容是:
  1. HKEY_LOCAL_MACHINE\SOFTWARE\123\1
  2.     221213   REG_SZ    1.0
复制代码

作者: sgaizxt001    时间: 2010-7-10 00:49

那这样可以不呢,你看一下,我没法实验
  1. @echo off
  2. for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213') do (
  3.   if not "%%a"=="" (set bb=您的版本为%%a) else (set bb=请您安装最新的版本)
  4. )
  5. 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

  1. @echo off
  2. set bb=请您安装最新的版本
  3. for /f "tokens=3 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\123\1" /v 221213 2^>nul') do set bb=您的版本为%%a
  4. )
  5. msg %username% %bb%
复制代码
改了下10L的。。。

[ 本帖最后由 defanive 于 2010-7-13 22:25 编辑 ]
作者: neorobin    时间: 2010-7-14 01:18

  1. @echo off
  2. 2>nul >nul (
  3. REM 在注册表根目录以及一些近根目录下是不能创建普通项的, 例如 HKLM 下不能, 但在 HKCU 下可以创建
  4. reg add HKLM\software\123\1 /v 221213 /d "2.0" /f & rem 作用显示版本 2.0
  5. REM reg delete HKLM\software\123\1 /f & rem 作用显示安装最新版提示
  6.   (reg query HKLM\software\123\1)&&(
  7.     for /f "tokens=3*" %%t in ('reg query HKLM\software\123\1 /v 221213^|more +4') do echo 您的版本为 %%t|msg *
  8.   )||(
  9.     msg * 请您安装最新的版本!
  10.   )
  11. )
  12. pause
复制代码

作者: jay_16    时间: 2011-4-13 21:16

14# neorobin


好强大哦




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2