Board logo

标题: 批处理中字符串替换,如何替换等于号?? [打印本页]

作者: mxb88919135     时间: 2007-5-16 13:22    标题: 批处理中字符串替换,如何替换等于号??
比如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 ]

作者: mxb88919135     时间: 2007-5-16 13:23
如果只是替换=为=1,1,1,0,0,1的话就相当于每句替换了....
好像在""中^是无效的吧

作者: wudixin96     时间: 2007-5-16 13:44
@echo off
setlocal enabledelayedexpansion
for /f %%a in (a.txt) do (
set "var=%%a"
set var=!var:abc==abc=1,1,1,0,0,1!
set var=!var:~1,-1!
echo !var! >> 1_bak.txt
)
endlocal
pause


这样??

作者: chenall     时间: 2007-5-16 14:02
用SET好像不能替换=

作者: mxb88919135     时间: 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=会出错啊....

作者: lxmxn     时间: 2007-5-16 14:23
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。
 sed "s/\(abc=\)/\11,1,1,0,0,1/g" ufile 

作者: mxb88919135     时间: 2007-5-16 14:34
sed可以是可以.
但是因为sed这是外部命令,不一定所有的机器上都有的.同样VBS的编译器也不是所有的机器上都有的.所以有没有FOR或者其他的内部命令可以解决的.
本机器时WIN2000

作者: wudixin96     时间: 2007-5-16 14:38
楼主的意思是有=号的行才替换吗?
而且是在=号后加上1,1,1,0,0,1吗?

Last edited by wudixin96 on 2007-5-16 at 02:39 PM ]

作者: mxb88919135     时间: 2007-5-16 14:50
大致如此
在INI文件中
abc相当于一个变量
我想要的是把 abc= 替换成 abc=1,1,1,0,0,1
不是有=号的行替换而是有abc=的时候才替换
谢谢

作者: lxmxn     时间: 2007-5-16 14:51
如果用批处理,很难办到。

用VBS是个好的选择,每个Windows系列的机子都应该有wscript.exe的。

作者: mxb88919135     时间: 2007-5-16 14:56
我现在想到一个思路,大家看看对不对
就是把改成abc=!变量A!
然后在批处理中通过赋值变量A来达到修改abc=的目的...

作者: mxb88919135     时间: 2007-5-16 15:10
突然发现各问题,为什么
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以后每行最后都会多个空格???

作者: wudixin96     时间: 2007-5-16 16:01
空格产生是echo !var! >> 1_bak.txt中!var!后面多了个空格。

作者: mxb88919135     时间: 2007-5-16 16:05
这样啊,没有办法去了吗?
看了http://www.cn-dos.net/forum/viewthread.php?tid=25172&fpage=1&highlight=%E7%A9%BA%E6%A0%BC&page=1
好像对我这个没用啊

作者: wudixin96     时间: 2007-5-16 16:07
echo !var!>> 1_bak.txt

作者: mxb88919135     时间: 2007-5-16 16:43
受教了.....
结贴吧。