[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[注册表类] 批处理如何读取注册表内容,弹出对话框提示?

能不能实现以下功能:

如果注册表中:123\1 下面的 221213键值是:1.0  则弹出一个对话框,显示内容:您的版本为1.0

如果注册表中:123\1 下面的 221213键值是:2.0  则弹出一个对话框,显示内容:您的版本为2.0

如果不存在 123\1 注册表项, 则弹出一个对话框,显示内容:请您安装最新的版本!

如何实现

14# neorobin


好强大哦

TOP

  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
复制代码

TOP

  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 编辑 ]
第三方命令行工具编程
Http://Hi.Baidu.Com/Console_App

TOP

继续顶起来!看看谁会!

TOP

原帖由 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 编辑 ]

TOP

@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%

这样看看呢,屏蔽了注册表查询不到子键的错误信息,相当于是对空行解析
努力学习,努力挣分

TOP

原帖由 sgaizxt001 于 2010-7-10 20:31 发表
不存在的话就是需要安装最新版本了嘛

能不能也设置msg的提示?

TOP

不存在的话就是需要安装最新版本了嘛
努力学习,努力挣分

TOP

感谢LS的回答,但是,有个问题,当键不存在时,并没有提示“请安装最新版本”,而是出现了如下错误提示:

错误: 系统找不到指定的注册表项或值。
输入要发送的消息;在新的一行上按 CTRL-Z 以结束消息;然后按 ENTER

TOP

那这样可以不呢,你看一下,我没法实验
  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%
复制代码
努力学习,努力挣分

TOP

原帖由 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
复制代码

TOP

原帖由 基拉freedom 于 2010-7-9 23:10 发表
用msg好像不能直接用参数的吧.......等等看谁会 难道又是用VBS?

嗯,就是用VBS的思路!

TOP

用msg好像不能直接用参数的吧.......等等看谁会 难道又是用VBS?
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

reg query "123\1" /v 221213
你先看看他的输出结果
努力学习,努力挣分

TOP

返回列表