中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-11 18:26
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何用reg 来查找注表某个值,并取出某个值?? 查看 818 回复 9
楼 主 [求助]如何用reg 来查找注表某个值,并取出某个值?? 发表于 2009-04-19 13:27 ·  中国 香港
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
如题:
我想用reg 来查这个值:
Distinguished-Name

并出Distinguished-Name 数据中的一部分:
CN=张三,OU=ddd,OU=kkk,OU=uuuDC=Freedom,DC=org

我想要取出 张三 这个值,并付于某个变量: set name=张三

关键是怎么取出张三这个值来??
2 发表于 2009-04-19 13:54 ·  中国 广东 广州 海珠区 电信
新手上路
积分 19
发帖 15
注册 2009-04-05 17:22
17年会员
UID 142204
性别 男
状态 离线
你这种没环境!没准确参数!
高手们很难给你答案的!
我这个新人发个例子!自己想................

注册表环境!(操作系统WIN2003)
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER]
"Distinguished-Name"="CN=张三,OU=ddd,OU=kkk,OU=uuuDC=Freedom,DC=org"

运行环境:WIN2003 CMD
for /f "tokens=1 delims=," %%l in ('reg QUERY "HKEY_CURRENT_USER" /v "Distinguished-Name"^|find /i "CN="') do (
for /f "tokens=2 delims==" %%m in ("%%l") do set name=%%m )
echo %name%
3 发表于 2009-04-19 14:39 ·  中国 香港
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
谢谢,操作系统是xp
4 发表于 2009-04-19 14:44 ·  中国 香港
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
我把你写的代码加存为aaa.bat
执行结果如下:
C:\>aaa

C:\>for /F "tokens=1 delims=," %l in ('reg QUERY "HKEY_CURRENT_USER" /v "Disting
uished-Name"|find /i "CN="') do (for /F "tokens=2 delims==" %m in ("%l") do set
name=%m )

错误: 系统找不到指定的注册表项或值

C:\>echo
ECHO 处于打开状态。
5 发表于 2009-04-19 14:54 ·  中国 香港
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
你这个是要找到具体的键值,
因为这个键值是在S-1-5-21-3066645261-2536786027-3422793319-1117下面的,因为每台电脑的sid都不一样。所以不能用你这个方法来找。

还是谢谢你
6 发表于 2009-04-19 23:07 ·  中国 广西 柳州 电信
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
各位大侠帮帮忙
7 发表于 2009-04-20 03:13 ·  中国 广东 广州 番禺区 电信
新手上路
积分 19
发帖 15
注册 2009-04-05 17:22
17年会员
UID 142204
性别 男
状态 离线
你当然不能照抄啊!我的只是例子
注册表环境!(操作系统WIN2003)
我注明是这注册表例子为例子!
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER]
"Distinguished-Name"="CN=张三,OU=ddd,OU=kkk,OU=uuuDC=Freedom,DC=org"

你自己不能完成就要提供完整的调试环境!
注册表的完整目标位置!要没每台机器都不同就要提供多个成为比较例子的注册表例子

你这种不是固定注册表项现象
按我的水平只能用regedit 来导出大项来用其他命令来查找判断!
看其他高手的意见吧
8 发表于 2009-04-20 05:55 ·  中国 广西 柳州 电信
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
恩,现在就是不是固定注册表项,有什么方法吗??
9 发表于 2009-04-20 11:30 ·  中国 上海 电信
新手上路
积分 7
发帖 7
注册 2008-12-22 14:11
17年会员
UID 134608
性别 男
状态 离线
有办法实现吗??
10 发表于 2009-04-20 18:51 ·  中国 广东 广州 电信
初级用户
★★
l i u s s
积分 73
发帖 101
注册 2008-09-17 00:21
17年会员
UID 125825
性别 男
来自 GZ
状态 离线
在Win2K工具包中有一个用来搜索注册表的工具,从整个注册表中搜索某字符串,只需几十秒时间:

dureg

/cr Find the size of HKEY_CLASSES_ROOT
/cu Find the size of HKEY_CURRENT_USER
/u Find the size of HKEY_USERS
/lm Find the size of HKEY_LOCAL_MACHINE
/a All. Find the size of entire registry.

</Subtree switch> "registry path" Find the size of any registry key
e.g. dureg /lm "software\microsoft" finds the size of the HKLM\Software\Microsoft key

/s "string" Search for string in the registry
e.g. dureg /s "video" finds all occurrences of "video" in the registry

/s "string" Search for string in the registry subtree
e.g. dureg /lm /s "video" finds all occurrences of "video" in the HKLM
(to stop a search, press Ctrl+Break)

http://support.microsoft.com/kb/317382


例如:dureg /s "Distinguished-Name" 可以从注册表中搜索包含 Distinguished-Name 字符串的项目,可以用定向符把结果保存到临时文件,或嵌套到 for 语句中处理结果。

[ Last edited by newxso on 2009-4-20 at 20:00 ]
附件
dureg.rar (14.74 KiB, 下载次数: 8)
论坛跳转: