[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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
复制代码
1

评分人数

初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

不就行末 多了几个空格么?
用textpro点1下菜单就搞定了。

TOP

简单的修改 就是输出时 截取到字符到倒数第一个   Write left(str,len(str)-1)

TOP

谢谢各位的热心帮助!完美解决问题。

TOP

楼主共享一下解决方法 也方便他人
笨办法 外部 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
复制代码
1

评分人数

TOP

返回列表