中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-04 14:24
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理中字符串替换,如何替换等于号?? 查看 2,541 回复 15
楼 主 批处理中字符串替换,如何替换等于号?? 发表于 2007-05-16 13:22 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
比如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 发表于 2007-05-16 13:23 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
如果只是替换=为=1,1,1,0,0,1的话就相当于每句替换了....
好像在""中^是无效的吧
3 发表于 2007-05-16 13:44 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
@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


这样??
4 发表于 2007-05-16 14:02 ·  中国 福建 泉州 电信
银牌会员
★★★
积分 1,276
发帖 469
注册 2002-12-23 13:00
23年会员
UID 586
性别 男
来自 福建泉州
状态 离线
用SET好像不能替换=
QQ:366840202
http://chenall.net
5 发表于 2007-05-16 14:06 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
测试数据
aaaaa
abc=
bbbbb
aabc=
出力数据
aaa
abc=1,1,1,0,0,1
bbb
=abc=1,1,1,0,0,1
好像aabc=会出错啊....
6 发表于 2007-05-16 14:23 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
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 
7 发表于 2007-05-16 14:34 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
sed可以是可以.
但是因为sed这是外部命令,不一定所有的机器上都有的.同样VBS的编译器也不是所有的机器上都有的.所以有没有FOR或者其他的内部命令可以解决的.
本机器时WIN2000
8 发表于 2007-05-16 14:38 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
楼主的意思是有=号的行才替换吗?
而且是在=号后加上1,1,1,0,0,1吗?

[ Last edited by wudixin96 on 2007-5-16 at 02:39 PM ]
9 发表于 2007-05-16 14:50 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
大致如此
在INI文件中
abc相当于一个变量
我想要的是把 abc= 替换成 abc=1,1,1,0,0,1
不是有=号的行替换而是有abc=的时候才替换
谢谢
10 发表于 2007-05-16 14:51 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
如果用批处理,很难办到。

用VBS是个好的选择,每个Windows系列的机子都应该有wscript.exe的。
11 发表于 2007-05-16 14:56 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
我现在想到一个思路,大家看看对不对
就是把改成abc=!变量A!
然后在批处理中通过赋值变量A来达到修改abc=的目的...
12 发表于 2007-05-16 15:10 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
突然发现各问题,为什么
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 发表于 2007-05-16 16:01 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
空格产生是echo !var! >> 1_bak.txt中!var!后面多了个空格。
14 发表于 2007-05-16 16:05 ·  中国 浙江 杭州 联通
初级用户
积分 37
发帖 16
注册 2007-04-28 00:36
19年会员
UID 86707
性别 男
状态 离线
这样啊,没有办法去了吗?
看了http://www.cn-dos.net/forum/viewthread.php?tid=25172&fpage=1&highlight=%E7%A9%BA%E6%A0%BC&page=1
好像对我这个没用啊
15 发表于 2007-05-16 16:07 ·  中国 浙江 杭州 联通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
19年会员
UID 75624
性别 男
状态 离线
echo !var!>> 1_bak.txt
论坛跳转: