首页 > 解决方案 > 编码vbscript转换后从文本文件中删除空白行

问题描述

我有一个转换文本文件编码的脚本。我的文本文件末尾有一个空行,但转换后我在文件末尾得到 2 个空行。有人可以帮忙吗?你会在下面找到我的 vbscript:

Const adTypeBinary          = 1
Const adTypeText            = 2
Const adSaveCreateNotExist  = 1
Const adSaveCreateOverWrite = 2
Const adWriteLine = 1
Const adReadLine = -2
Const adLF = 10
Const adCR = 13
Const adCRLF = -1
Set streamUTF8 = CreateObject("ADODB.Stream")
Set streamASCII = CreateObject("ADODB.Stream")

set args = Wscript.arguments
strOutOne= args(0)

streamUTF8.Open
streamUTF8.Type = adTypeText
streamUTF8.LineSeparator = adCRLF
streamUTF8.Charset = "UTF-8"
streamUTF8.LoadFromFile = strOutOne

streamASCII.Open
streamASCII.Type = adTypeText
streamASCII.LineSeparator = adCRLF
streamASCII.CharSet = "us-ascii"

Do Until streamUTF8.EOS
streamASCII.WriteText streamUTF8.ReadText(adReadLine), adWriteLine
Loop
streamASCII.SaveToFile(strOutOne), adSaveCreateNotExist

标签: vbscript

解决方案


由于您指定adWriteLine,因此与每一行一样,将写入最后一行(您的空行)并添加一个额外的行分隔符,从而创建第二个额外行。

您可以在将其写入 ASCII 流之前检查该行是否为空白:

sLine = streamUTF8.ReadText(adReadLine)
If Trim(sLine) <> "" Then streamASCII.WriteText sLine, adWriteLine

如果文件中的其他任何地方都没有空行,这将起作用。否则它也会删除那些。

您还可以考虑使用 and 一次性读取整个流,然后adReadAll将其全部写入:streamASCII.WriteTextadWriteChar

streamASCII.WriteText streamUTF8.ReadText(adReadAll), adWriteChar

推荐阅读