![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-05 14:12 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 怎么样替换文本中的字符串 |
| 可打印版本 1,832 / 17 |
| 第1楼 kidzgy | 发表于 2007-08-04 18:38 |
| 中级用户 发帖 129 积分 262 | |
|
怎么样替换文本中的字符串 比如说,
FreqUpMode=* (*代表任意数字,可替换的数字) 我要寻找FreqUpMode,不管*的数字是什么,我要替换它为3。 |
|
| 第2楼 slore | 发表于 2007-08-04 19:32 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
UE可以……
|
|
| 第3楼 kidzgy | 发表于 2007-08-04 20:21 |
| 中级用户 发帖 129 积分 262 | |
|
我要用BAT哦。批处理命令
|
|
| 第4楼 wudixin96 | 发表于 2007-08-04 21:59 |
| 银牌会员 发帖 931 积分 1,928 | |
|
P中似乎只有用sed外部命令才能替换,
纯P的话,只能导到新文件里。 |
|
| 第5楼 sonicandy | 发表于 2007-08-04 22:05 |
| 中级用户 发帖 91 积分 273 | |
|
这个代码可以实现楼主的要求,不过有两个缺陷
1 会去掉文件中的空行 2 只能判断关键字是否符合要求,而不能检查是否有等号 输入 输出 [ Last edited by sonicandy on 2007-8-5 at 07:12 AM ] |
|
| 第6楼 kidzgy | 发表于 2007-08-05 07:48 |
| 中级用户 发帖 129 积分 262 | |
|
楼上的真比熊猫还讨人喜爱。谢谢。
你所说的两个缺点倒没有什么所谓,不影响ini的使用,可是我发现的缺点就是,速度比较慢了一点。 |
|
| 第7楼 kidzgy | 发表于 2007-08-05 08:03 |
| 中级用户 发帖 129 积分 262 | |
|
仔细弄了弄发现,如果输入输出同一个文件的话,那只能把新修改的内容增加到原来的文件上。这样就出现两份内容,一份修改前的,一份是修改后的,这样就没有达到替换字符串的要求。
|
|
| 第8楼 sonicandy | 发表于 2007-08-05 10:35 |
| 中级用户 发帖 91 积分 273 | |
|
不客气,这样应该就可以了.
|
|
| 第9楼 slore | 发表于 2007-08-05 10:57 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
早说是ini格式的文件……
FreqUpMode=48asdfadf FreqUpMode=99;FreqUpMode=81 FreqUpModes=12122121test这种P是很难做到的 |
|
| 第10楼 kidzgy | 发表于 2007-08-05 15:23 |
| 中级用户 发帖 129 积分 262 | |
|
回9楼
不瞒你,8楼已经做到了。 |
|
| 第11楼 slore | 发表于 2007-08-14 12:15 |
| 铂金会员 发帖 2,478 积分 5,212 | |
Originally posted by kidzgy at 2007-8-5 15:23: 早说是ini格式的文件…… FreqUpMode=23 FreqUpMode=23 FreqUpModes=12122121test这种P是很难做到的 这个是运行后的结果?做到了? |
|
| 第12楼 不得不爱 | 发表于 2007-08-14 16:36 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我来个简单点的:
当然可以不要临时文件也是可以的,不过文件大的话内存占用比较大,而且也不知道CMD里最多可以有多少变量 |
|
| 第13楼 ansipeter | 发表于 2007-08-14 16:57 |
| 中级用户 发帖 130 积分 269 | |
|
你们都够牛X的,不过可以告诉你们,你们的FOR语句都会忽略以;分号开头的行,在我看来还是不完美
|
|
| 第14楼 不得不爱 | 发表于 2007-08-14 18:21 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
下面的是忽略以:分号开头的行,以;分号开头的行可以正常输出.没有办法,FOR总会忽略某些行.
set input=test.txt set output=tmp.txt for /f "eol=: tokens=1,2* delims==" %%i in ('type %input%') do if "%%i"=="FreqUpMode" (echo FreqUpMode=23>>%output% ) else echo %%i=%%j>>%output% del %input% ren %output% %input% pause |
|
| 第15楼 youxi01 | 发表于 2007-08-14 18:42 |
| 高级用户 发帖 247 积分 846 来自 湖南==》广东 | |
|
是不是可以指定一个非常难得一见的字符作为eol的关键字符呢?
如:☉、∈等等,文件中第一个字符是这种情况的应该不多吧? |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |