中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-29 07:07
47,816 主题排行 / 349,916 发帖 / 今日 2 篇 / 48,265 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结帖-有新问题] 关于自动批量替换注册表内路径的问题
可打印版本  2,850 / 12
第1楼 windzb 发表于 2006-10-29 07:26
初级用户 发帖 14 积分 32
[已结帖-有新问题] 关于自动批量替换注册表内路径的问题
得到 lxmxn 大哥的提醒,单独开个帖。

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

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

[ Last edited by windzb on 2006-10-30 at 05:24 PM ]
第2楼 lxmxn 发表于 2006-10-29 07:33
版主 发帖 4,938 积分 11,386

  你需要把"game.reg"文件的内容也帖上来,这样才好根据里面文本的内容来对里面的字串进行提取,进而用批处理来替换需要替换的字串。
第3楼 windzb 发表于 2006-10-29 07:44
初级用户 发帖 14 积分 32
全部内容很长的 总共154K 主要是要替换 l:\\游戏 这个路径

下面截取一段吧

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






"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


"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 ]
第4楼 xuantian 发表于 2006-10-29 07:50
高级用户 发帖 282 积分 587
用记事本的替换功能不就行了吗
第5楼 windzb 发表于 2006-10-29 07:52
初级用户 发帖 14 积分 32
有方法自动替换吗?

[ Last edited by windzb on 2006-10-29 at 08:02 AM ]
第6楼 namejm 发表于 2006-10-29 09:27
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  可以试试下面的代码:
第7楼 lxmxn 发表于 2006-10-29 10:44
版主 发帖 4,938 积分 11,386


  sed 工具可以在论坛搜索一下,论坛里面有很多关于 sed 命令的介绍,也提供了下载地址。你用的时候,把 sed 放在环境变量中即可。
第8楼 windzb 发表于 2006-10-30 08:42
初级用户 发帖 14 积分 32
感谢,我先测试一下。
第9楼 windzb 发表于 2006-10-30 09:37
初级用户 发帖 14 积分 32
Originally posted by namejm at 2006-10-29 09:27 AM:
  可以试试下面的代码:
第10楼 windzb 发表于 2006-10-30 17:24
初级用户 发帖 14 积分 32

@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 ]
第11楼 不得不爱 发表于 2006-10-30 20:49
超级版主 发帖 2,044 积分 5,310 来自 四川南充
我认为游戏路径可以不要,让系统自己找这样速度会快点
第12楼 windzb 发表于 2006-11-02 21:50
初级用户 发帖 14 积分 32
多谢了~`呵呵`已经完成了
第13楼 不得不爱 发表于 2006-11-02 22:18
超级版主 发帖 2,044 积分 5,310 来自 四川南充
l:\\游戏和l:\游戏是用起来是一样的
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023