中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-06 00:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教如何去掉最后一个“,” 查看 961 回复 2
楼 主 请教如何去掉最后一个“,” 发表于 2007-10-04 11:17 ·  中国 陕西 联通
新手上路
积分 14
发帖 5
注册 2007-10-03 16:22
18年会员
UID 98828
性别 男
状态 离线
做了一个sql server存储过程的批处理,有个问题请教
读取a.txt :

POLICENO varchar(10) *
PNAME varchar(10)
ISADMIN char(2)
PASSWD varchar(20)
UNITID varchar(9)
MOBILE varchar(20)
PHONE varchar(20)
EMAIL varchar(20)
WADDRESS varchar(50)
HADDRESS varchar(50)
MEMO varchar(100) end

输出为b.txt :

@POLICENO varchar(10),
@PNAME varchar(10),
@ISADMIN char(2),
@PASSWD varchar(20),
@UNITID varchar(9),
@MOBILE varchar(20),
@PHONE varchar(20),
@EMAIL varchar(20),
@WADDRESS varchar(50),
@HADDRESS varchar(50),
@MEMO varchar(100),

批处理命令是:

for /f "tokens=1,2" %%a in (.\databaseinfo\%filename%.txt) do @echo @%%a %%b, >> .\%filename%\upAdd%filename%.txt

现在想去掉b.txt中最后一行末尾的的“,”或者在输入b.txt时最后一行没有”,“
因为存储过程最后一行不能有“,”,而其他行末尾是必须的。
希望高手给代码能解释一下,好认真学习,谢谢大家!!!

[ Last edited by windad on 2007-10-4 at 11:19 AM ]
2 发表于 2007-10-04 18:02 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
我想应该有两种办法:

第一种,是使用sed,应该很简单实现,但sed很难学。

第二种,先生成b.txt,然后再对b.txt进行第二次处理,将最后一行的“,"去掉即可。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
3 Sed版 发表于 2007-10-04 19:24 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线
 sed -e "/./!d;" -e "s/\(]\+]\+]\+\).*$/\1,/;$s/,//" sql.txt|sed "$s/,//"
论坛跳转: