中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 17:22
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理中字符串替换,如何替换等于号??
可打印版本  2,553 / 15
第1楼 mxb88919135 发表于 2007-05-16 13:22
初级用户 发帖 16 积分 37
批处理中字符串替换,如何替换等于号??
比如1.TXT中有abc=的字符串
如果我想替换abc=为abc=1,1,1,0,0,1的话应该如何做?
自己写的无用...-_-!!!

setlocal enabledelayedexpansion
for /f %%a in (1.txt) do (
set "var=%%a"
set "var=!var:abc==abc=1,1,1,0,0,1!"
echo !var! >> 1_bak.txt
)
endlocal
pause

[ Last edited by mxb88919135 on 2007-5-16 at 01:25 PM ]
第2楼 mxb88919135 发表于 2007-05-16 13:23
初级用户 发帖 16 积分 37
如果只是替换=为=1,1,1,0,0,1的话就相当于每句替换了....
好像在""中^是无效的吧
第3楼 wudixin96 发表于 2007-05-16 13:44
银牌会员 发帖 931 积分 1,928


这样??
第4楼 chenall 发表于 2007-05-16 14:02
银牌会员 发帖 469 积分 1,276 来自 福建泉州
用SET好像不能替换=
第5楼 mxb88919135 发表于 2007-05-16 14:06
初级用户 发帖 16 积分 37
测试数据
aaaaa
abc=
bbbbb
aabc=
出力数据
aaa
abc=1,1,1,0,0,1
bbb
=abc=1,1,1,0,0,1
好像aabc=会出错啊....
第6楼 lxmxn 发表于 2007-05-16 14:23
版主 发帖 4,938 积分 11,386
Originally posted by mxb88919135 at 2007-5-16 14:06:
测试数据
aaaaa
abc=
bbbbb
aabc=
出力数据
aaa
abc=1,1,1,0,0,1
bbb
=abc=1,1,1,0,0,1
好像aabc=会出错啊....

看着诧异,怎么aaaaa就变成了aaa了呢?

用sed。
第7楼 mxb88919135 发表于 2007-05-16 14:34
初级用户 发帖 16 积分 37
sed可以是可以.
但是因为sed这是外部命令,不一定所有的机器上都有的.同样VBS的编译器也不是所有的机器上都有的.所以有没有FOR或者其他的内部命令可以解决的.
本机器时WIN2000
第8楼 wudixin96 发表于 2007-05-16 14:38
银牌会员 发帖 931 积分 1,928
楼主的意思是有=号的行才替换吗?
而且是在=号后加上1,1,1,0,0,1吗?

[ Last edited by wudixin96 on 2007-5-16 at 02:39 PM ]
第9楼 mxb88919135 发表于 2007-05-16 14:50
初级用户 发帖 16 积分 37
大致如此
在INI文件中
abc相当于一个变量
我想要的是把 abc= 替换成 abc=1,1,1,0,0,1
不是有=号的行替换而是有abc=的时候才替换
谢谢
第10楼 lxmxn 发表于 2007-05-16 14:51
版主 发帖 4,938 积分 11,386
如果用批处理,很难办到。

用VBS是个好的选择,每个Windows系列的机子都应该有wscript.exe的。
第11楼 mxb88919135 发表于 2007-05-16 14:56
初级用户 发帖 16 积分 37
我现在想到一个思路,大家看看对不对
就是把改成abc=!变量A!
然后在批处理中通过赋值变量A来达到修改abc=的目的...
第12楼 mxb88919135 发表于 2007-05-16 15:10
初级用户 发帖 16 积分 37
突然发现各问题,为什么
setlocal enabledelayedexpansion
for /f %%a in (1.txt) do (
set "var=%%a"
set "var=!var:abc==abc=1,1,1,0,0,1!"
echo !var! >> 1_bak.txt
)
endlocal
pause
上面这样的代码出力到1_bak.txt以后每行最后都会多个空格???
第13楼 wudixin96 发表于 2007-05-16 16:01
银牌会员 发帖 931 积分 1,928
空格产生是echo !var! >> 1_bak.txt中!var!后面多了个空格。
第14楼 mxb88919135 发表于 2007-05-16 16:05
初级用户 发帖 16 积分 37
这样啊,没有办法去了吗?
看了http://www.cn-dos.net/forum/viewthread.php?tid=25172&fpage=1&highlight=%E7%A9%BA%E6%A0%BC&page=1
好像对我这个没用啊
第15楼 wudixin96 发表于 2007-05-16 16:07
银牌会员 发帖 931 积分 1,928
echo !var!>> 1_bak.txt
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023