Board logo

标题: [文本处理] 【已解决】BAT或VBS如何去除文本结尾的空行? [打印本页]

作者: 思想之翼    时间: 2013-5-20 00:32     标题: 【已解决】BAT或VBS如何去除文本结尾的空行?

去除文本结尾的空行
a.txt用VBS按列分解后,每个文本数据结尾(最底)有一空行,导入excel运行宏代码时会报错,如何修改这VBS代码,就可以去除最底的空行?抑或再写一批处理去除空行?
作者: xxpinqz    时间: 2013-5-20 10:37

http://www.bathome.net/thread-24430-1-1.html
是这里头的问题吧?
vbs不懂,第三方也不懂,
没见过猪,但也吃过猪肉,看多了还是知道vbCrLf代表换行回车。
所以应该就是str = str & vbCrLf这里没判断才会空行。加个是否最后一行的判断就可以
或者判断是否第一行;不懂写VBS代码,套用批处理的思路,下面REM的两句~~
  1. Sub getColumn(ar,filename)
  2.         Set file = FSO.OpenTextFile("a.txt",1)
  3. rem set line1=true
  4.         Do While file.AtEndOfStream <> True
  5.                 n = Split(file.ReadLine)
  6. rem if line1 = true then set line1=false else str = str & vbCrLf
  7.                   str = str & n(0)
  8.                   For Each a In ar
  9.                         str = str & " " & n(a)
  10.                   Next
  11.         Loop
  12.         file.Close
  13.         Set file = FSO.CreateTextFile(filename,True)
  14.         file.Write str
  15.         file.Close
  16. End Sub
复制代码

作者: 我来了    时间: 2013-5-20 12:06

不就行末 多了几个空格么?
用textpro点1下菜单就搞定了。
作者: terse    时间: 2013-5-20 13:24

简单的修改 就是输出时 截取到字符到倒数第一个   Write left(str,len(str)-1)
作者: 思想之翼    时间: 2013-5-20 18:37

谢谢各位的热心帮助!完美解决问题。
作者: terse    时间: 2013-5-20 20:22

楼主共享一下解决方法 也方便他人
笨办法 外部 GAWK 解决
  1. gawk "func p(){for(i=2;i<=NF;i++)print $1,$i>>i-1\".txt\"}func f(){for(i=2;i<=NF;i++)printf $1\" \"$i>i-1\".txt\"}{if(getline s){p();$0=s;p()}else f()}" a.txt
  2. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2