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

[注册表类] reg query 表示与或非关系?

[复制链接]
发表于 2023-9-8 09:10:43 | 显示全部楼层 |阅读模式
本帖最后由 tiandyoin 于 2023-9-8 09:11 编辑

reg query 的选项 /v [/f [/d /k]] 一直让我很迷惑?

当我正想确定 /v 与 /f 是‘与’关系,表示‘且’。却找到下面的反例
  1. C:\>reg query "HKEY_CURRENT_USER\1"  /v "*test*" /s /f "Mouse" /k /d

  2. HKEY_CURRENT_USER\1
  3.     testExpandsz    REG_EXPAND_SZ    "Mouse without Borders"
  4.     testbinary    REG_BINARY    4D006F00750073006500200077006900740068006F0075007400200042006F00720064006500720073000000
  5.     testco&product    REG_SZ    Microsoft Garage Mouse without Borders
  6.     test!%    REG_SZ    Microsoft Garage %%% !!!
  7.     MyTestHex    REG_BINARY    4D006900630072006F0073006F006600740020004700610072006100670065004D006F00750073006500200077006900740068006F0075007400200042006F0072006400650072007300000

  8. HKEY_CURRENT_USER\1\Mouse without Borders2
  9.     testExpandsz    REG_EXPAND_SZ    Mouse without Borders
  10.     testHex    REG_BINARY    FFFE4D006F00750073006500200077006900740068006F0075007400200042006F00720064006500720073000000

  11. 搜索结束: 找到 7 匹配。
复制代码
如上:
  1. test!%    REG_SZ    Microsoft Garage %%% !!!
复制代码
这一句项名称和数据并没有出现 Mouse。
/v 这个开关的很为很是奇怪,有时表示且,有时表示或?
发表于 2023-9-8 09:38:51 | 显示全部楼层
回复 1# tiandyoin


没有看到什么证据说它是“且”

微软官网的语法:
  1. reg query <keyname> [{/v <valuename> | /ve}] [/s] [/se <separator>] [/f <data>] [{/k | /d}] [/c] [/e] [/t <Type>] [/z] [/reg:32] [/reg:64]
复制代码
/v <valuename>        指定要查询的注册表值名称。 如果省略,则返回 keyname 的所有值名称。 如果还使用 /f 选项,则此参数的 Valuename 是可选的。
/f <data>        指定要搜索的数据或模式。 如果字符串包含空格,请使用双引号。 如果未指定,则使用通配符 (*) 作为搜索模式。
 楼主| 发表于 2023-9-8 10:43:04 | 显示全部楼层
本帖最后由 tiandyoin 于 2023-9-27 12:25 编辑

回复 2# Batcher

  1.            /v 与 /f 开关必须存在一个。
  2.            注意:
  3.               /k /d     是 /f 的次级开关。             表示“或”关系 /k ∪ /d,       单独一个 /f = /f /d /k, 所以一般省略掉。
  4.            /v /k        二者同时存在(没有 /s 或 /d), 表示互斥关系  /k ∩ /v = ф      空集,将无法查找到任何结果。
  5.            /v /k /d     三者同时存在(没有 /s),       表示“或”关系       /v ∪ /d,  忽略无效的 /k 开关,合并所有找到结果。
  6.            /v /k    /s  三者同时存在(没有       /d), 表示“且”关系 /k ∩ {/v /s},    即查找某名称为XX的子项中的某名称为YY的值。
  7.            /v /k /d /s  四者同时存在,                 表示“或”关系(/k ∩ {/v /s}) ∪ (/v ∪ /d),合并以上两者找到的结果。
  8.            /t 预计与 /d 逻辑一样(不完全测试):
  9.            /v /k /d /t /s  五者同时存在,              表示“或”关系(/k ∩ {/v /s}) ∪ (/v ∪ /d ∪ /t),合并以上两者找到的结果。
  10.            
复制代码
我自己推测是这样的,/d 是独立条件,只要查找数据有XX,就会输出。
/k 独立一个选项能查,
/k 联合其它选项情况有点复杂。
测试用例不多,还不好下定论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 13:19 , Processed in 0.017392 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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