中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理中字符串替换,如何替换等于号??
« [1] [2] »
作者:
标题: 批处理中字符串替换,如何替换等于号?? 上一主题 | 下一主题
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『楼 主』:  批处理中字符串替换,如何替换等于号??

比如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 ]

2007-5-16 13:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 2 楼』:  

如果只是替换=为=1,1,1,0,0,1的话就相当于每句替换了....
好像在""中^是无效的吧

2007-5-16 13:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 3 楼』:  


@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
这样??

2007-5-16 13:44
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chenall
银牌会员




积分 1276
发帖 469
注册 2002-12-23
来自 福建泉州
状态 离线
『第 4 楼』:  

用SET好像不能替换=



QQ:366840202
http://chenall.net
2007-5-16 14:02
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (366840202)  编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 5 楼』:  

测试数据
aaaaa
abc=
bbbbb
aabc=
出力数据
aaa
abc=1,1,1,0,0,1
bbb
=abc=1,1,1,0,0,1
好像aabc=会出错啊....

2007-5-16 14:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
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


2007-5-16 14:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 7 楼』:  

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

2007-5-16 14:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 8 楼』:  

楼主的意思是有=号的行才替换吗?
而且是在=号后加上1,1,1,0,0,1吗?

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

2007-5-16 14:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 9 楼』:  

大致如此
在INI文件中
abc相当于一个变量
我想要的是把 abc= 替换成 abc=1,1,1,0,0,1
不是有=号的行替换而是有abc=的时候才替换
谢谢

2007-5-16 14:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 10 楼』:  

如果用批处理,很难办到。

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

2007-5-16 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 11 楼』:  

我现在想到一个思路,大家看看对不对
就是把改成abc=!变量A!
然后在批处理中通过赋值变量A来达到修改abc=的目的...

2007-5-16 14:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 12 楼』:  

突然发现各问题,为什么
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以后每行最后都会多个空格???

2007-5-16 15:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 13 楼』:  

空格产生是echo !var! >> 1_bak.txt中!var!后面多了个空格。

2007-5-16 16:01
查看资料  发短消息 网志   编辑帖子  回复  引用回复
mxb88919135
初级用户





积分 37
发帖 16
注册 2007-4-28
状态 离线
『第 14 楼』:  

这样啊,没有办法去了吗?
看了http://www.cn-dos.net/forum/view ... E6%A0%BC&page=1
好像对我这个没用啊

2007-5-16 16:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 15 楼』:  

echo !var!>> 1_bak.txt

2007-5-16 16:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: