Board logo

标题: [注册表类] 求助:BAT批处理如何判断注册表键值? [打印本页]

作者: gyghw    时间: 2014-6-27 03:57     标题: 求助:BAT批处理如何判断注册表键值?

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

批处理判断SuperLogin键值为0x00000000(0)时 暂停退出批处理,SuperLogin键值为0x00000000(1)时 重启计算机。
作者: CrLf    时间: 2014-6-27 04:36

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

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

作者: gyghw    时间: 2014-6-27 16:27

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

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

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

回复 4# CrLf


注册表里查看键值为0x00000000(0)或者0x00000000(1),应该不会出现其他情况,不是0,就是1.
作者: szl1123    时间: 2014-6-30 14:22

本帖最后由 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
复制代码

作者: gyghw    时间: 2014-7-7 20:45

回复 2# CrLf


    不正确。
作者: gyghw    时间: 2014-7-7 20:45

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



    不正确
作者: szl1123    时间: 2014-7-7 21:31

回复 8# gyghw


    是32位系统还是64位系统?是保存为.bat运行还是其他程序调用?
作者: apang    时间: 2014-7-7 21:40

这样呢?
  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
复制代码

作者: CrLf    时间: 2014-7-7 22:49

已修改




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