![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-23 13:29 |
共 47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 怎样过滤出这个注册表中需要的部分? |
| 可打印版本 1,664 / 6 |
| 第1楼 ultralqxq | 发表于 2004-11-15 00:00 |
| 初级用户 发帖 27 积分 165 | |
|
怎样过滤出这个注册表中需要的部分? 我的系统是XP,我把注册表里的服务列表导了出来当备份。可是直接导进备份会报错,所以我希望谁能告诉我,怎样提取路径跟start参数,这样就不会报错了!
如只提取路径的命令: ren servicers.reg servicers.txt for %a in (servicers.txt) do find "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" >>d:\2.txt 可是再加上同时提取start的命令我就写不出来了,谁能帮我 ? services.reg的内容如下: wiindows Registry Editor Version 5.00 "ErrorControl"=dword:00000000 "Group"="Primary disk" "Start"=dword:00000004 "Tag"=dword:00000003 "Type"=dword:00000001 "ErrorControl"=dword:00000001 "Group"="SCSI miniport" "Start"=dword:00000004 "Tag"=dword:00000038 "Type"=dword:00000001 "5"=dword:00000001 "Type"=dword:00000001 "Start"=dword:00000003 "ErrorControl"=dword:00000001 "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\ 72,00,69,00,76,00,65,00,72,00,73,00,5c,00,61,00,63,00,39,00,37,00,69,00,6e,\ 00,74,00,63,00,2e,00,73,00,79,00,73,00,00,00 "DisplayName"="Intel(r) 82801 Audio Driver Install Service (WDM)" "Security"=hex:01,00,14,80,90,00,00,00,9c,00,00,00,14,00,00,00,30,00,00,00,02,\ 00,1c,00,01,00,00,00,02,80,14,00,ff,01,0f,00,01,01,00,00,00,00,00,01,00,00,\ 00,00,02,00,60,00,04,00,00,00,00,00,14,00,fd,01,02,00,01,01,00,00,00,00,00,\ 05,12,00,00,00,00,00,18,00,ff,01,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,\ 20,02,00,00,00,00,14,00,8d,01,02,00,01,01,00,00,00,00,00,05,0b,00,00,00,00,\ 00,18,00,fd,01,02,00,01,02,00,00,00,00,00,05,20,00,00,00,23,02,00,00,01,01,\ 00,00,00,00,00,05,12,00,00,00,01,01,00,00,00,00,00,05,12,00,00,00 "0"="PCI\\VEN_8086&DEV_2445&SUBSYS_0A191019&REV_11\\3&13c0b0c5&0&FD" "Count"=dword:00000001 "NextInstance"=dword:00000001 "ErrorControl"=dword:00000001 "Group"="Boot Bus Extender" "Start"=dword:00000000 "Tag"=dword:00000001 "Type"=dword:00000001 "DisplayName"="Microsoft ACPI Driver" "ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\ 52,00,49,00,56,00,45,00,52,00,53,00,5c,00,41,00,43,00,50,00,49,00,2e,00,73,\ 00,79,00,73,00,00,00 "0"="ACPI_HAL\\PNP0C08\\0" "Count"=dword:00000001 "NextInstance"=dword:00000001 "ErrorControl"=dword:00000001 "Group"="Boot Bus Extender" "Start"=dword:00000004 "Tag"=dword:00000005 "Type"=dword:00000001 "ErrorControl"=dword:00000001 "Group"="SCSI miniport" "Start"=dword:00000004 "Tag"=dword:0000003c "Type"=dword:00000001 。。。(还有很多类似的,就不复制了) |
|
| 第2楼 ultralqxq | 发表于 2004-11-16 00:00 |
| 初级用户 发帖 27 积分 165 | |
|
我想我表达的不是很好,我再解释一下:根据上面的注册表,我希望经过处理后得到下面这样的样子:"Start"=dword:00000004
"Start"=dword:00000004。。。。(省略一下,因为下面的也是这格式)然后我在开头自己加上一句:wiindows Registry Editor Version 5.00 就可以用了! |
|
| 第3楼 Climbing | 发表于 2004-11-16 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
第一,你没有必要使用这种方式修改注册表,因为你可以直接使用reg命令。详情请查看reg /?第二,reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" /v Start /s第三,按照你的思路的解决办法:doit.cmd内容:
然后执行命令: for /f "tokens=*" %i in (services.reg) do @call doit %i |
|
| 第4楼 ultralqxq | 发表于 2004-11-18 00:00 |
| 初级用户 发帖 27 积分 165 | |
|
谢谢你的热心帮助,真不好意思哦,我很菜的,我根本不知道XP中还有reg这个命令,所以只想到了这个笨方法!!
我照你第二个方法测试了一下,不行呢。不知道你去试过没有? reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" /v Start /s 这句命令中的/V Start 跟/S是不能并用的!虽然解释说明中说可以,可我实践证明不行的!不信你去试试看。 还有我试了reg save HKLM\SYSTEM\CurrentControlSet\Services Services.hiv 结果备份成功了 可是用reg restore恢复却根本不可能做到,就算我进到带命令行的安全模式下也不行!提示拒绝访问! 最后一个方法写得很复杂(对我而言),我还在研究中,我很菜的,想看懂它,我想要花些时间吧! |
|
| 第5楼 ultralqxq | 发表于 2004-11-19 00:00 |
| 初级用户 发帖 27 积分 165 | |
|
看晕了也搞不懂,大侠解释一下好吗?
set c=%1%2%3%4%5%6%7%8%9 是什么意思?用来做什么的?我根本不懂这个。 > nul 请问nul是什么设备? set c= 这句是设C为变量是吗? echo >> myservice.reg 这里的 >>myservice.reg不用加双引号吗? 太多不知道,所以读不懂程序。于是我就直接复制过来,由于我不懂怎么编译CMD文件,所以把doit.cmd改成doit.bat,这应该没关系的吧?可是照着你给的命令输完后,什么提示都没有,也没生成myservice.reg文件。 PS:最后我改用VBS编写的脚本解决了问题。可是我还是想知道上面的疑问,为什么我不能运行你提供的方法?麻烦老兄解释一下好吗?万分感谢。 |
|
| 第6楼 死性不改 | 发表于 2004-11-19 00:00 |
| 中级用户 发帖 88 积分 378 | |
|
XP系统中的findstr命令可以轻松搞定这个问题。type Services.reg >Services.txt
findstr /i "Services Start" Services.txt>>myservices.reg |
|
| 第7楼 Climbing | 发表于 2004-11-19 00:00 |
| 铂金会员 发帖 2,753 积分 6,962 来自 河北保定 | |
|
我写的批处理是有问题的,在运行过程中会出错误退出。我忘了xp中有findstr这个命令,这个命令是支持正则表达式的,更适合应用于楼主的情况,如下:findstr /R "^\
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |