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

[注册表类] 求助:BAT批处理如何判断注册表键值?

HKEY_LOCAL_MACHINE\SOFTWARE\EYOOCLIENTSTATUS\SuperLogin    注:SuperLogin 类型为 REG_DEORD  值为0x00000000(0)或者0x00000000(1),

批处理判断SuperLogin键值为0x00000000(0)时 暂停退出批处理,SuperLogin键值为0x00000000(1)时 重启计算机。

本帖最后由 CrLf 于 2014-7-7 22:50 编辑

如果把除0以外都视为错误的话,可以用简单粗暴的办法:
  1. (
  2. reg query HKLM\SOFTWARE\EYOOCLIENTSTATUS /v SuperLogin|find "0x0">nul
  3. )&&echo 正常||echo 错误
复制代码

TOP

本帖最后由 gyghw 于 2014-6-27 16:28 编辑

试了一下,返回的值不正常,SuperLogin键值为0或者为1时,都显示的正常。
SuperLogin 类型为 REG_DEORD   值为0x00000000(0)或者0x00000000(1),是不是判断上的问题?
再问一下,如果返回为1不正常时自动重启下电脑,如果返回为0时,退出程序。

TOP

把这个命令返回的结果发上来:
  1. reg query HKLM\SOFTWARE\EYOOCLIENTSTATUS /v SuperLogin
复制代码
那出现 0 和 1 之外的值应该如何处理呢?

TOP

回复 4# CrLf


注册表里查看键值为0x00000000(0)或者0x00000000(1),应该不会出现其他情况,不是0,就是1.

TOP

本帖最后由 szl1123 于 2014-6-30 14:29 编辑

回复 1# gyghw
  1. @echo off
  2. for /f "tokens=2,*" %%i in ('reg query "HKLM\SOFTWARE\EYOOCLIENTSTATUS\SuperLogin" /v "SuperLogin"') do (
  3. set szl=%%j
  4. )
  5. echo 检测到SuperLogin的数据是:%szl%
  6. if %szl%==0x0 (
  7. echo SuperLogin的数据是:0) else echo SuperLogin的数据是:1
  8. pause
复制代码

TOP

回复 2# CrLf


    不正确。

TOP

回复  gyghw
szl1123 发表于 2014-6-30 14:22



    不正确

TOP

回复 8# gyghw


    是32位系统还是64位系统?是保存为.bat运行还是其他程序调用?

TOP

这样呢?
  1. @echo off
  2. reg query "HKLM\SOFTWARE\EYOOCLIENTSTATUS"|findstr /ie "SuperLogin.*0">nul
  3. if "%errorlevel%"=="0" (echo,0) else echo,1
  4. pause
复制代码

TOP

已修改

TOP

返回列表