中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-11 20:32
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]如何替换文本内容
可打印版本  1,504 / 10
第1楼 gundam525 发表于 2007-11-27 19:24
初级用户 发帖 8 积分 23
[求助]如何替换文本内容
恕小弟愚钝,在论坛里没有发现相关帖子。
问题如下:
我有3个ini文件,里面内容是英文字符和符号。但有空行,空格。
我想把这3个文件中的"ok,you find me"替换成 "finish"
如何做啊?实在是急着找答案,往各位仁兄仁姐仁版主帮帮小弟~
拜谢先
第2楼 lxmxn 发表于 2007-11-27 19:29
版主 发帖 4,938 积分 11,386

没怎么测试....有问题跟贴讨论。
第3楼 gundam525 发表于 2007-11-27 19:52
初级用户 发帖 8 积分 23
在此,先谢谢lxmxn版主
替换是替换了,但是结果有点让人意外。
我把东西发上来吧。

1.源文件没有变化,倒是自动生成了新文件,而且格式和原来的不一样了。
把必须保留的空行删除掉了。
第4楼 gundam525 发表于 2007-11-27 19:58
初级用户 发帖 8 积分 23
传不上来啊,我把测试的ini文件内容发上来吧
文件名1.ini 2.ini
其中,1.ini中的内容为:

ok,you find me
1111111
ok,you find me

ok,you find me
11111111
ok,you find me

ok,you find me


2.ini中的内容为:

ok,you find me
22222
ok,you find me

ok,you find me

ok,you find me
22222
ok,you find me

使用该命令后,新生成了3个文件-_-|||
new_1.ini new_2.ini new_new_1.ini

其中
new_1.ini中的内容为:
finish
1111111
finish
finish
11111111
finish
finish

new_2.ini中的内容为:
finish
22222
finish
finish
finish
22222
finish
第5楼 upsco 发表于 2007-11-27 20:13
初级用户 发帖 32 积分 67
要保留空行,可以这样试试:
第6楼 terse 发表于 2007-11-27 23:47
银牌会员 发帖 946 积分 2,404
这样可以了
第7楼 wubozh 发表于 2007-11-29 21:17
初级用户 发帖 18 积分 40
set string=%%b
set string=!string:ok,you find me=finish!
看不懂这两句。不知道这里的string是不是一个外部程序?好象dos下和xp下都没有啊?还是一个简单的变量 ?
第8楼 wubozh 发表于 2007-11-29 21:27
初级用户 发帖 18 积分 40
if not "!list!"=="" set list=!list:ok,you find me=finish!
请帮我解释一下这句的意义。特别是!list:ok,you find me=finish!这个。不知道是什么意思啊。
第9楼 wubozh 发表于 2007-11-29 21:45
初级用户 发帖 18 积分 40
我试了一下,用@ echo %string:bcd=bbb%,会用bbb代替string变量里的bcd。可是,这种用法我没见到过。在哪儿有介绍呢?我在论坛上搜索也没搜索到。我是初学批处理啊。大家不要笑话
第10楼 lxmxn 发表于 2007-11-30 00:01
版主 发帖 4,938 积分 11,386
Originally posted by wubozh at 2007-11-29 21:45:
我试了一下,用@ echo %string:bcd=bbb%,会用bbb代替string变量里的bcd。可是,这种用法我没见到过。在哪儿有介绍呢?我在论坛上搜索也没搜索到。我是初学批处理啊。大家不要笑话

看置顶新手FAQ“Question10”或者直接在命令看帮助set /?。
第11楼 mailmail 发表于 2009-05-04 23:37
新手上路 发帖 10 积分 10
请问下,我用了lxmxn版主的语句测试我的一个文本,为什么我用这个运行以后会有result is 20 这句话呢?
另外我把输出改为>就只能输出result is 20 了,这里如果只要输出最新的不用保留以前的不能直接把》改成>的吗?如下
@echo off&Setlocal EnableDelayedExpansion
for %%a in (nodata.txt) do (
for /f "usebackq delims=" %%b in ("%%a") do (
set string=%%b
set string=!string:CWBTF0004 - No data was matched to the specified options.=!
>>new_%%~nxa echo:!string!
)
)
运行结果是
Transfer file: d:\ad\ad.DTF

Receive failed.
Rows transferred: 0
result is 20
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023