找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 8137|回复: 12

[注册表类] 求助无盘超级用户判断的批处理问题

[复制链接]
发表于 2025-5-27 16:25:59 | 显示全部楼层 |阅读模式
  1. @Echo off
  2. Title 判断网维大师系统虚拟盘是否为超级用户脚本。
  3. FOR /F "tokens=1,2 delims=x" %%i in ('Reg Query HKLM      \SYSTEM\CurrentControlSet\iCafe8') do Set SuperAdmin=%%j
  4. If %SuperAdmin%==1 (
  5. Call :超级用户
  6. ) else (
  7. Call :普通用户
  8. )
  9. Goto :eof
  10. :普通用户
  11. @Echo 当前状态:普通用户.
  12. @Echo 这里放普通用户状态执行的命令
  13. pause >nul
  14. Goto :eof
  15. Goto :eof
  16. :超级用户
  17. @Echo 当前状态:超级用户.
  18. @echo 这里放超级用户状态执行的命令
  19. pause >nul
  20. Goto :eof
复制代码
这个批处理我用CMD测试不通过,不知道是哪里问题。求大佬帮忙解答下
发表于 2025-5-27 17:31:59 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-27 18:08 编辑

回复 1# tyboyhyb

先把第三行中 HKLM 之后的多个空格全部删除再试,即注册表查找目标项整个改为 "HKLM\SYSTEM\CurrentControlSet\iCafe8"
发表于 2025-5-27 21:52:53 | 显示全部楼层
@echo off
REG QUERY HKLM\SYSTEM\CurrentControlSet\icafe8 /v Admin | find "0x1" && (
Call :超级用户
) else (
Call :普通用户
)
 楼主| 发表于 2025-5-28 00:54:51 | 显示全部楼层
回复 2# aloha20200628


    不是空格这个问题,这个我删了测试过还是一样的。
 楼主| 发表于 2025-5-28 00:56:57 | 显示全部楼层
回复 3# czjt1234


    这个批处理是判定对应注册表键值值,如果为1即超级用户,不知道大佬这样书写后是否能达到需要的结果呢
发表于 2025-5-28 09:52:21 | 显示全部楼层
回复 4# tyboyhyb

如果不是 "HKLM\SYSTEM\CurrentControlSet\iCafe8" 路径名问题,再来看 reg query "HKLM\SYSTEM\CurrentControlSet\iCafe8" 的返回值,若其是多行,就看最后一行长啥样,即其是否满足 "tokens=1,2 delims=x" 的分割条件,请楼主贴出真实返回值即可一目了然了...
发表于 2025-5-28 16:48:39 | 显示全部楼层
回复 5# tyboyhyb


从网吧电脑上复制过来的

你测试下再质疑么
 楼主| 发表于 2025-5-28 19:32:40 | 显示全部楼层
C:\Users\Administrator>reg query "HKLM\SYSTEM\CurrentControlSet\iCafe8"

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\iCafe8
    (默认)    REG_SZ
    Admin    REG_DWORD    0x1


C:\Users\Administrator>FOR /F "tokens=1,2 delims=x" %%i in ('Reg Query HKLM\SYSTEM\CurrentControlSet\iCafe8') do Set SuperAdmin=%%j
此时不应有 %%i。

C:\Users\Administrator>If %SuperAdmin%==1 (
More? Call :超级用户
More? ) else (
More? Call :普通用户
More? )
从批脚本外面调用批处理标签的操作无效。

C:\Users\Administrator>
C:\Users\Administrator>Goto :eof

C:\Users\Administrator>:普通用户
C:\Users\Administrator>@Echo 当前状态:普通用户.
当前状态:普通用户.

C:\Users\Administrator>@Echo 这里放普通用户状态执行的命令
这里放普通用户状态执行的命令

C:\Users\Administrator>pause >nul
 楼主| 发表于 2025-5-28 19:36:20 | 显示全部楼层
回复 7# czjt1234


上一楼就是测试返回的结果,提示“此时不应有%%i”
我对于这种函数批处理不太懂,实在能力有限,麻烦帮忙解答下,若测试成功可有小红包答谢
 楼主| 发表于 2025-5-28 19:38:34 | 显示全部楼层
回复 7# czjt1234


   
C:\Users\Administrator>REG QUERY HKLM\SYSTEM\CurrentControlSet\icafe8 /v Admin | find "0x1" && (Call :超级用户) else (Call :普通用户)
此时不应有 else。


这个语句测试结果就是这个提示。不知道哪里问题
发表于 2025-5-28 20:01:12 | 显示全部楼层
回复 8# tyboyhyb

一楼代码第3-4行改为如下两行试试...

  1. FOR /F "delims=" %%i in ('Reg Query "HKLM\SYSTEM\CurrentControlSet\iCafe8" ') do Set "SuperAdmin=%%i"
  2. If "%SuperAdmin:~-1%"=="1" (
复制代码
发表于 2025-5-28 21:21:19 | 显示全部楼层
本帖最后由 czjt1234 于 2025-5-29 05:51 编辑

回复 10# tyboyhyb


REG QUERY HKLM\SYSTEM\CurrentControlSet\icafe8 /v Admin | find "0x1" && (Call :超级用户) || (Call :普通用户)

实际使用的
  1. @echo off
  2. REG QUERY HKLM\SYSTEM\CurrentControlSet\icafe8 /v Admin | find "0x1" && (
  3.     ren Y:\系统更新\64位输入法资源 32位输入法资源
  4.     exit
  5. )

  6. echo %COMPUTERNAME% | find /i "server" && (
  7.     ren Y:\系统更新\64位输入法资源 32位输入法资源
  8. ) || (
  9.     start "" /d "x:\t\jtkkdesk" "desk.exe"
  10. )

  11. start "" /d "x:\s\盖仑STEAM预关联" "盖仑STEAM预关联.exe"

  12. netsh interface ipv4 set neighbors "本地连接" "192.168.0.254" "00-00-00-00-00-00" store=active
复制代码
发表于 2025-5-29 13:30:10 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-29 18:17 编辑

回复 8# tyboyhyb

8楼出现 ‘此时不应有 %%i’ 报错是因代码从脚本文件中复制到命令行运行所致,%%i 须改为 %i 即可...
因无法复刻楼主注册表的实例,以下一些调试代码建议仅供参考》
   诊断1楼代码的关键是第3-4行所涉及的 获取 reg query ... 返回值 以及 if ...==... 比对结果
   要验证返回值的几种类型和与 "tokens... delims..." 分割式的对应关系,如在一楼第4行代码前增加一行暂停打印 echo,%SuperAdmin%&pause
   若返回值经验证不止两种(例如可能查找失败,可能最后一行尾数为1或不为1,...)则仅采用二值判断即 if ... else ... 句式就可能出错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:15 , Processed in 0.021146 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表