Board logo

标题: [求助]请教怎样用批处理重命名注册表的某个键 [打印本页]

作者: dosshuini     时间: 2010-12-11 15:20    标题: [求助]请教怎样用批处理重命名注册表的某个键

比如
[HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices]的
"\\DosDevices\\C:"=hex:fc,57,b2,d9,4e,68,cb,4d,ab,79,03,cf,a2,f6,b7,50
重命名为
"\\DosDevices\\Y:"=hex:fc,57,b2,d9,4e,68,cb,4d,ab,79,03,cf,a2,f6,b7,50

谢谢。
作者: Hanyeguxing     时间: 2010-12-11 16:22

@echo off
set n=HKLM\SYSTEM\MountedDevices
set m=\DosDevices\
for /f "tokens=2* delims=        " %%a in ('reg query %n% /v "%m%C:"') do (
reg add %n% /v "%m%Y:" /d %%b /t %%a /f
reg delete %n% /v "%m%C:" /f
)
delims=后为一个tab制表符

[ Last edited by Hanyeguxing on 2010-12-11 at 23:17 ]
作者: dosshuini     时间: 2010-12-11 18:55
谢谢楼上的朋友。
刚才试了一下,似乎不行,不知道是否是我的系统问题,我的是精简版的,也许缺少某个命令行程序吧。
能否提示一下会调用什么命令行程序?
已改为tab制表符。
再次感谢。

[ Last edited by dosshuini on 2010-12-11 at 19:09 ]
作者: dosshuini     时间: 2010-12-11 19:17
刚在完整的系统中测试,也不行。可以排除缺少文件的原因。
作者: Hanyeguxing     时间: 2010-12-11 23:17
测试用:
@echo off
set n=HKLM\SYSTEM\MountedDevices
set m=\DosDevices\
for /f "tokens=2* delims=        " %%a in ('reg query %n% /v "%m%C:"') do (
echo %%b和%%a
pause
把这个结果贴上来(delims=后为一个tab制表符)

[ Last edited by Hanyeguxing on 2010-12-12 at 00:18 ]
作者: dosshuini     时间: 2010-12-12 11:37

运行后没有反应。我的系统是windows2003 sp2
作者: Hanyeguxing     时间: 2010-12-12 12:07
你复制错了。。。
直接在命令提示符里运行
reg query  HKLM\SYSTEM\MountedDevices /v "\DosDevices\C:"

作者: dosshuini     时间: 2010-12-12 12:20
汗。。。

重新来过,附上图片两张:

图1-运行5楼代码


图2-运行7楼代码

作者: dosshuini     时间: 2010-12-12 12:23
图1中的Tab制表符无法直接输入,复制黏贴后丢失。
作者: 726842270     时间: 2010-12-12 12:24
LZ似乎不了解FOR的变量在CMD中和P的区别,在CMD下不能用%%A这是P的写法,S要写成%A才对
作者: dosshuini     时间: 2010-12-12 12:38
我对批处理知之甚少,也就会写个copy之类最简单的东西。我现在想搞个一键将现有系统做成ramos的批处理,目前就卡在了重命名\\DosDevices\\C:为\\DosDevices\\Y:上,因为每台机器\\DosDevices\\C:的值都不同,所以需要保留不处理,而仅仅是更改一下它的键名,即盘符。
我之前的想法是批处理先导出MountedDevices项为1.reg,然后删除注册表中这个项,接着替换1.reg中的\\DosDevices\\C:为\\DosDevices\\Y:,最后重新导入1.reg。
无奈能力不够,替换这一环没有成功,不知道是否是因为含有“\”":"等特殊字符的缘故。
故注册了上坛子来求教。

[ Last edited by dosshuini on 2010-12-12 at 12:53 ]
作者: Hanyeguxing     时间: 2010-12-12 13:38
楼主再重新运行2楼的批处理代码看下,是批处理,不是在cmd命令解释器里直接运行的
ps:在xp sp3下测试修改成功的

[ Last edited by Hanyeguxing on 2010-12-12 at 13:40 ]
作者: dosshuini     时间: 2010-12-12 13:44
谢谢Hanyeguxing的耐心!
直接点击bat文件,一闪而过,注册表没有发生变化,拖到cmd运行,也无反应。
作者: dosshuini     时间: 2010-12-12 13:47
难道是win2003不支持??
作者: dosshuini     时间: 2010-12-12 14:16
哈哈,成功了!
我试着将tab制表符改为空格符,居然立马生效!
谢谢Hanyeguxing,谢谢!