中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结帖-有新问题] 关于自动批量替换注册表内路径的问题
作者:
标题: [已结帖-有新问题] 关于自动批量替换注册表内路径的问题 上一主题 | 下一主题
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『楼 主』:  [已结帖-有新问题] 关于自动批量替换注册表内路径的问题

得到 lxmxn 大哥的提醒,单独开个帖。

我的问题是,想把联众游戏绿化,直接使用批处理运行取得当前游戏目录路径,并替换同目录下的game.reg里的游戏路径。
game.reg已经提取出来,游戏路径为 l:\\游戏

%CD% 取得的路径是单斜线的, l:\游戏  直接替换可能不行。有什么好的方法吗?

[ Last edited by windzb on 2006-10-30 at 05:24 PM ]

2006-10-29 07:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


  你需要把"game.reg"文件的内容也帖上来,这样才好根据里面文本的内容来对里面的字串进行提取,进而用批处理来替换需要替换的字串。


2006-10-29 07:33
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 3 楼』:  

全部内容很长的 总共154K 主要是要替换 l:\\游戏 这个路径

下面截取一段吧

=========== 我是分割线 ===========

[HKEY_CURRENT_USER\Software\Globallink]

[HKEY_CURRENT_USER\Software\Globallink\Game]

[HKEY_CURRENT_USER\Software\Globallink\Game\Share]
"Path"="l:\\游戏\\Game\\share"
"OFPath"="l:\\游戏\\Game\\share\\OurFriend\\ourfriend.exe"
"RegisterPort"=dword:000007d0
"FirstRun"=dword:00000001
"Version"="2.6.0.15"
"registerurl"="http://register.ourgame.com/regist/index.html"
"RoomDat"=dword:00020001
"NewRegisterServer"="play2.ourgame.com(联众主站)"
"MainRegisterSvr1"="play.ourgame.com(联众主站)"
"MainRegisterSvr2"="play2.ourgame.com(联众主站)"
"MainRegister80Svr1"="proxy.ourgame.com(联众主站)"
"MainRegister80Svr2"="proxy2.ourgame.com(联众主站)"
"NewRegister80Server"="proxy.ourgame.com(联众主站)"
"LastVersion"="2.6.0.15"
"RunCount"=dword:00000007
"IdleSecond"=dword:0000001e
"Use80PortSvr"=dword:00000000

[HKEY_CURRENT_USER\Software\Globallink\Game\Share\Color]
"RoomServerListBkColor"=dword:0088b8d9
"DisBkColor"=dword:00fef4f1
"ListBkColor"=dword:00e8e0dc
"IOMsgColor"=dword:00004080
"SaidTitleColor"=dword:00414991
"SaidMsgColor"=dword:00c08000
"SecureColor"=dword:00808080
"EmoteColor"=dword:00c08080
"ListFrColor"=dword:00642b1e
"DefaultPath"="l:\\游戏\\Game\\share\\Theme\\default"
"GuestFrColor"=dword:00400080
"GuestBkColor"=dword:00f0b8a2
"GroupFrColor"=dword:00808040
"GroupBkColor"=dword:00f0b8a2
"MatchPlayerFrColor"=dword:004080ff
"MatchPlayerBkColor"=dword:00f0b8a2
"EnemyFrColor"=dword:0000e1e1
"EnemyBkColor"=dword:00f0b8a2
"FriendBkColor"=dword:00f0b8a2
"FriendFrColor"=dword:00808040
"SetDefaultTheme"=dword:00000001
"SetNewTheme2"=dword:00000001
"CurNativeTheme"=""

。。。。。。
================ 太多,没截完 =========

[ Last edited by windzb on 2006-10-29 at 07:48 AM ]

2006-10-29 07:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xuantian
高级用户





积分 587
发帖 282
注册 2006-4-10
状态 离线
『第 4 楼』:  

用记事本的替换功能不就行了吗

2006-10-29 07:50
查看资料  发送邮件  发短消息 网志  OICQ (315594066)  编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 5 楼』:  

有方法自动替换吗?

[ Last edited by windzb on 2006-10-29 at 08:02 AM ]

2006-10-29 07:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  

  可以试试下面的代码:
@echo off
set route=%cd%
set route=%route:\=\\%
cd.>_test.reg
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.reg) do (
    set var=%%i
    set var=!var:l:\\游戏=%route%!
    >>_test.reg echo !var!
)




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-10-29 09:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  


sed -e "s/l:\\\\游戏/%cd:\=\\\\%/" game.reg
  sed 工具可以在论坛搜索一下,论坛里面有很多关于 sed 命令的介绍,也提供了下载地址。你用的时候,把 sed 放在环境变量中即可。


2006-10-29 10:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 8 楼』:  

感谢,我先测试一下。

2006-10-30 08:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by namejm at 2006-10-29 09:27 AM:
  可以试试下面的代码:
[code]
@echo off
set route=%cd%
set route=%route:\=\\%
cd.>_test.reg
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.reg) do ( ...

测试成功~ 十分感谢namejm版主~~

同时也谢谢lxmxn的帮忙~

2006-10-30 09:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 10 楼』:  



  Quote:
@echo off
set route=%cd%
set route=%route:\=\\%
cd.>_test.reg
setlocal enabledelayedexpansion
for /f "delims=" %%i in (test.reg) do (
    set var=%%i
    set var=!var:l:\\游戏=%route%!
    >>_test.reg echo !var!
)
endlocal
regedit /s _test.reg
del _test.reg
start .\GLWorld.exe
exit

目前这样用,直接使用这个批处理启动游戏,注册后删除_test.reg。
但是就算这样的话每次运行都要花时间替换,注册表比较大,替换时间有点长。
所以想不删除_test.reg,使用命令检测_test.reg里的游戏目录是当前目录,然后跳过替换,直接注册_test.reg后运行游戏,可以吗?
请指教。

就不知道检测的时间和替换的时间是否一样长了。。。

顺便问一个问题,为什么把route改成path后,regedit就变成不是内部命令也不是外部命令了?
使用其他变量名都是可以的。。。。敏感字?
那也应该是PATH报错才对啊。。。。奇怪中。。。。。

[ Last edited by windzb on 2006-10-30 at 07:07 PM ]

2006-10-30 17:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 11 楼』:  

我认为游戏路径可以不要,让系统自己找这样速度会快点



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-10-30 20:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windzb
初级用户





积分 32
发帖 14
注册 2006-10-28
状态 离线
『第 12 楼』:  

多谢了~`呵呵`已经完成了

2006-11-2 21:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 13 楼』:  

l:\\游戏和l:\游戏是用起来是一样的



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-11-2 22:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: