![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-26 01:21 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]如何批量替换文本文件或注册表文件中的路径 |
| 可打印版本 4,949 / 15 |
| 第1楼 HUNRYBECKY | 发表于 2006-09-09 23:31 |
| 银牌会员 发帖 442 积分 1,179 | |
|
[求助]如何批量替换文本文件或注册表文件中的路径 很高兴和大家相识,我是新人,多多照顾.
最近在制作绿色软件的过程遇到一个问题,因为在制作绿色软件时,有些软件必须在注册表中写入路径才能运行,文件关联也必须要使用路径才能实现,所以我把注册表导出来后,想根据当前绿色软件的路径使用DOS工具或是处理来完成路径替换,然后再导入到注册表中,如我原来安装的软件路径是E:\OFFICE2003,导出的注册表的某段文本是 @="E:\\OFFICE2003\\OFFICE11\\WINWORD.EXE,1",现在我想批量替换路径E:\\OFFICE2003为当前绿色软件的路径F:\\MYOFFICE(又如何获取当前路径呢?),如何批量替换这些路径呢,望大家指点下.谢谢.. 在线等待.................................. [ Last edited by willsort on 2006-9-11 at 00:34 ] |
|
| 第2楼 chainliq | 发表于 2006-09-10 01:16 |
| 高级用户 发帖 244 积分 635 来自 广西贵港 | |
|
用批处理啊 用批处理啊,在要运行主程序之前先运行注册表注册表文件, 我网吧也些游戏也是这样做`!
|
|
| 第3楼 HUNRYBECKY | 发表于 2006-09-10 01:19 |
| 银牌会员 发帖 442 积分 1,179 | |
|
chainliq
谢谢你的回答,但是你没有弄清楚我的问题,我是希望在运行主程序之前,如何批量修改注册表中的内容以适应不同的路径环境. |
|
| 第4楼 HUNRYBECKY | 发表于 2006-09-10 01:23 |
| 银牌会员 发帖 442 积分 1,179 | |
|
怎么这么久都没有人回答呀,是不是太简单了,没有人愿意回答呀。
|
|
| 第5楼 HUNRYBECKY | 发表于 2006-09-10 02:36 |
| 银牌会员 发帖 442 积分 1,179 | |
|
获取当前路径的例子我已经找到了,贴出来大家共享:
rem 先要建立一个PathTemp.txt文本文件,内容包括set PathTemp=,请不要使用回车 cls rem 复制PathTemp.txt为temp.bat并把当前的路径追加到temp.bat文件中 copy PathTemp.txt temp.bat cd>>temp.bat REM 调用temp.bat批处理文件以设置路径变量,成功后删除改文件 call temp.bat del temp.bat rem 以后都可以使用 %PathTemp% 来引用这个路径变量了,如Xcopy c:\boot.ini %PathTemp% /H/Y >NULL Xcopy c:\boot.ini %PathTemp% /H/Y>NULL CLS |
|
| 第6楼 HUNRYBECKY | 发表于 2006-09-10 04:23 |
| 银牌会员 发帖 442 积分 1,179 | |
|
补充一下,需要这个批处理程序运行在WINXP下,另外,这里怎么上传附件
|
|
| 第7楼 vkill | 发表于 2006-09-10 07:04 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
为什么不用记事本的替换哪?
|
|
| 第8楼 willsort | 发表于 2006-09-11 00:57 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
Re HUNRYBECKY:
在XP等NT环境的CMD中,可以直接引用系统变量%cd%来获取当前路径。 至于文本的替换,方案已经有很多了,都各有优劣,下面摘录Marco Maier Said总结的代码方案,其中有些是适合插入到你的代码中的。 Find & Replace by a batch file ?? http://groups.google.com/group/alt.msdos.batch/browse_thread/thread/6999dd86fb082377
|
|
| 第9楼 vkill | 发表于 2006-09-11 01:13 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
上面的这些一个都没有看懂......哎
|
|
| 第10楼 windzb | 发表于 2006-10-29 06:05 |
| 初级用户 发帖 14 积分 32 | |
|
我也遇到同样的问题,望有人能讲解一下。
|
|
| 第11楼 lxmxn | 发表于 2006-10-29 06:38 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by windzb at 2006-10-29 06:05: 遇到了什么问题了? 如果你的问题和楼主的大同小异,就把你的问题详细的描述一遍,让大伙知道你的问题所在,这样才好替你思考你的问题,如果你的问题也是看不懂 willsort 兄发的帖子的内容的话,那别人就没有办法了,因为太多了,不好解释的。顶多说说是由哪几个脚本所完成的。如果遇到新的问题的话,你可以单独发一个主题,来描述你的问题,一来便于大家看你的问题,二来有利于论坛的搜索功能的检索。谢谢合作。 |
|
| 第12楼 windzb | 发表于 2006-10-29 06:50 |
| 初级用户 发帖 14 积分 32 | |
|
不好意思,笔误。
是遇到了和楼主一样的问题。 想批量替换 联众注册表里的游戏路径为本地路径 注册表已经提取出来,命名为game.reg。 里面的路径 是 l:\\游戏\\Globallink\\ 替换成本地路径的话 是否可以使用 %CD% 呢? |
|
| 第13楼 windzb | 发表于 2006-10-29 06:54 |
| 初级用户 发帖 14 积分 32 | |
|
但是 使用 %CD% 得到的路径是 l:\游戏\Globallink\
直接替换的话就是不对的吧? |
|
| 第14楼 xuantian | 发表于 2006-10-29 06:55 |
| 高级用户 发帖 282 积分 587 | |
|
使用 %CD% 变量后应该不存在替换路径的问题.
比如: [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{00020901-0000-0000-C000-000000000046}\DefaultIcon] @="E:\\OFFICE2003\\OFFICE11\\WINWORD.EXE,1" 直接用: reg add "HKLM\SOFTWARE\Classes\CLSID\{00020901-0000-0000-C000-000000000046}\DefaultIcon" /ve /d "%CD%\WINWORD.EXE,%%1%" /f 即可. 至于文件关联,可以看看下面这两个文件的帮助信息 ASSOC 显示或修改文件扩展名关联。 FTYPE 显示或修改用于文件扩展名关联的文件类型。 ..... 批处理应该可以减少很多行... |
|
| 第15楼 windzb | 发表于 2006-10-29 07:00 |
| 初级用户 发帖 14 积分 32 | |
|
感谢楼上提供的方法,有想到过。
但是联众的注册表上千行的 不可能每一行都手动添加 reg add 可以直接替换外部的game.reg文件里的内容吗? |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |