vbscript - 编码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
解决方案
由于您指定adWriteLine
,因此与每一行一样,将写入最后一行(您的空行)并添加一个额外的行分隔符,从而创建第二个额外行。
您可以在将其写入 ASCII 流之前检查该行是否为空白:
sLine = streamUTF8.ReadText(adReadLine)
If Trim(sLine) <> "" Then streamASCII.WriteText sLine, adWriteLine
如果文件中的其他任何地方都没有空行,这将起作用。否则它也会删除那些。
您还可以考虑使用 and 一次性读取整个流,然后adReadAll
将其全部写入:streamASCII.WriteText
adWriteChar
streamASCII.WriteText streamUTF8.ReadText(adReadAll), adWriteChar
推荐阅读
- ruby - Ruby:使用多个 return..if 语句有什么后果?
- vb.net - 从datagridview打印它给了我错误信息
- python - Python 列表理解 Django 对象
- c# - C# 数据网格视图到数据网格视图
- unit-testing - 如何测试 bin 文件夹中的主要方法(Dart 独立命令行应用程序)
- apache-spark - 无法通过并行 JDBC 连接读取数据库表:Databricks 上的 Spark
- r - 达到阈值时 dplyr 重置计数器
- c# - WinZip 版本文件的 SharpZipLib 问题
- javascript - 如何在节点 js 中使用基本身份验证在节点获取模块中传递数据
- c++ - 在内部使用 dll 中的 C++ 标准库