Удаление пустых строк из текстового файла после преобразования в кодировку vbscript - PullRequest
1 голос
/ 26 февраля 2020

У меня есть скрипт, который преобразует кодировку текстового файла. Мой текстовый файл имеет одну пустую строку в конце, но после преобразования я получаю 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

1 Ответ

1 голос
/ 27 февраля 2020

Поскольку вы указываете adWriteLine, как и в каждой строке, будет записываться последняя строка (ваша пустая строка) и добавляется дополнительный разделитель строк, создавая вторую дополнительную строку.

Вы можете проверить если строка пуста перед записью в поток ASCII:

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

Это будет работать, если в вашем файле больше нет пустых строк. В противном случае они тоже будут удалены.

Вы также можете прочитать весь поток за один снимок, используя adReadAll, а затем записать все это с помощью streamASCII.WriteText и adWriteChar:

streamASCII.WriteText streamUTF8.ReadText(adReadAll), adWriteChar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...