中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 06:54
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [求助]txt转csv的问题
可打印版本  3,186 / 10
第1楼 hgx126 发表于 2008-10-22 13:31
初级用户 发帖 80 积分 100
[求助]txt转csv的问题
一目录下有许多文本文件,格式相同,内容如下:


要将此文本文件转换为Excel的csv.文件,我写如下代码:



转换成功了,可打开csv文件后,凡单元格内数字位数超过11位的数字全部成了科学计数。
我现在要做的是在数字位数超过11位的数字前加一个单引号“'”,转换成如下:

请教代码如何写?
第2楼 HAT 发表于 2008-10-22 13:46
版主 发帖 5,017 积分 9,023
这样能满足要求么?
第3楼 hgx126 发表于 2008-10-22 14:41
初级用户 发帖 80 积分 100
你这个是把所有的数字和汉字前都加了一个单引号。
我希望只是在数字位数超过11位的数字加引号,能行吗?
第4楼 HAT 发表于 2008-10-22 15:08
版主 发帖 5,017 积分 9,023
Re 3楼
批处理计算字符串的长度是一件比较浪费资源的操作,当数据量比较大的时候尤为明显。
如果一定要这样,可在本版搜索字符串长度
第5楼 hgx126 发表于 2008-10-22 15:22
初级用户 发帖 80 积分 100
那能不能这样:只给第二列、第三列和第五列的字符前加单引号?



[ Last edited by hgx126 on 2008-10-22 at 15:35 ]
第6楼 lxmxn 发表于 2008-10-26 19:02
版主 发帖 4,938 积分 11,386
E:\>gawk --posix --re-interval -F"|" -v OFS=, "{for(i=1;i<=NF;i++)if($i~/^{9,}/)$i=\"'\"$i;print}" your_file.txt
5411,'54110000377889,0,30000.0,2006/09/29,'88130095863129,2008/09/27,0.0,0.0,罗宗良,
'54110000410360,5411,'88130114562095,0,敬永猛,60000.0,2007/05/31,2009/05/29,0.0,0.0,
5411,'88130122241160,0,30000.0,2007/08/28,2008/08/27,0.0,'54110000744667,798.53,李国富,

E:\>
第7楼 longge0000 发表于 2008-10-26 21:51
初级用户 发帖 11 积分 24
Re 5楼
Originally posted by hgx126 at 2008-10-22 15:22:
那能不能这样:只给第二列、第三列和第五列的字符前加单引号?

第8楼 hgx126 发表于 2008-10-29 23:56
初级用户 发帖 80 积分 100

E:\>gawk --posix --re-interval -F"|" -v OFS=, "{for(i=1;i<=NF;i++)if($i~/^{9,}/)$i=\"'\"$i;print}" your_file.txt
5411,'54110000377889,0,30000.0,2006/09/29,'88130095863129,2008/09/27,0.0,0.0,罗宗良,
'54110000410360,5411,'88130114562095,0,敬永猛,60000.0,2007/05/31,2009/05/29,0.0,0.0,
5411,'88130122241160,0,30000.0,2007/08/28,2008/08/27,0.0,'54110000744667,798.53,李国富,

E:\>



利用的是外部命令吗?看不懂能不能解释一下?
第9楼 HAT 发表于 2008-10-30 00:13
版主 发帖 5,017 积分 9,023
Re 8楼
gawk.exe可以去这里下载:批处理室附件收集专用帖

这个命令比较复杂,靠别人讲是学不会的,自己先看看帮助吧。
第10楼 yishanju 发表于 2008-10-30 01:26
银牌会员 发帖 1,357 积分 1,488
第11楼 terse 发表于 2008-10-30 02:28
银牌会员 发帖 946 积分 2,404
基本满足(没特殊字符的话) 但文件大的话 BAT的效率还是问题
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023