Публикации
Публикации  »  Visual Basic Scripting (VBS)
Бесплатный хостинг + SSL-сертификат

Зарегистрируйте домен и получите 2 месяца бесплатного хостинга и SSL-сертификат на 1 год в подарок

Подробнее
GeekBrains

Как прочитать / записать текстовый файл построчно на VBS

Работа с текстовыми файлами по-прежнему актуальна. Эта небольшая заметка для того, чтобы быстро вспомнить как записать или прочитать текстовый файл на VBScript.

Чтение текстового файла на VBScript

Первый способ

Воспользоваться OpenTextFile. Например, прочитаем файл test.txt

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.OpenTextFile("test.txt", 1)
Do While Not f.AtEndOfStream
  str = f.ReadLine
  
  ' Что-нибудь делаем с прочитанной строкой, например, выводим сообщение
  MsgBox str

Loop
f.Close

Полный синтаксис:

OpenTextFile(filename [,iomode [,create [,format]]])

filename - имя файла который необходимо прочитать

iomode - режим открытия файла (1 - только чтение, 2 - для записи (если уже существует, будет перезаписан), 8 - для добавления)

create - true - создать файл, если он не существует, false - не создавать

format - кодировка (-2 - кодировка ОС по умолчанию, -1 - Unicode, 0 - ASCII)

Непосредственно для чтения самих данных из текстового файла можно воспользоваться одним из следующих операторов:

  • Read - чтение определенного количества символов независимо от конца строки (количество символов указывается в скобках после оператора)
  • ReadLine - прочитать строку полностью до конца (до символов перевода строки), т.е. построчное чтение текстового файла
  • ReadAll - прочитать весь файл целиком за раз, включая символы переноса строки.

Эти же приемы чтения файла можно использовать и в следующем способе.

Второй способ

Использовать GetFile и OpenAsTextStream. Принцип чтения такой же как и в первом способе, просто другой вариант открытия файла.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("test.txt")
Set ts = f.OpenAsTextStream(1)
Do While Not ts.AtEndOfStream
  str = ts.ReadAll
  
  ' Выводим на экран сообщение с содержимым файла
  MsgBox str

Loop
ts.Close

В скобках оператору OpenAsTextStream передается режим открытия файла iomode, который описан выше. Так же можно передать второй параметр, который будет означать кодировку format.

Запись текстового файла на VBScript

Создать и записать текстовый файл можно использовав один из трех операторов:

  1. CreateTextFile
  2. OpenTextFile
  3. OpenAsTextStream

Пример использования CreateTextFile

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.CreateTextFile("test.txt", True)
f.WriteLine("тест1")
f.WriteLine("тест2")
f.Close

Второй параметр указывает перезаписать или нет файл, если он существует. Так же можно добавить 3-й параметр, который будет означать кодировку (True - Unicode и False - ASCII)

Пример использования OpenTextFile

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.OpenTextFile("test.txt", 8, True)
f.WriteLine("тест3")
f.WriteLine("тест4")
f.Close

Здесь использован режим записи 8, т.е. добавление в существующий файл дополнительных строк, при этом, если файла не существует, он будет создан, т.к. третий параметр True.

Пример использования OpenAsTextStream

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile("test.txt")
Set ts = f.OpenAsTextStream(2)
ts.WriteLine("тест1")
ts.WriteLine("тест2")
ts.Close

Здесь мы создаем файл и записываем в него текст. Если файл уже существовал, он будет перезаписан.

Так же как и с чтением файла, есть несколько вариантов какие операторы использовать для записи:

  • Write - записать текст в файл без символов перевода строки
  • WriteLine - записать текст в файл и добавить символы перевода строки (построчная запись в файл)
  • WriteBlankLines - записать в файл указанное количество пустых строк

Думаю, предложенных способов вполне достаточно для чтения / записи текстовых файлов. Пожелания и замечания оставляйте в комментариях ниже.

Категория: Visual Basic Scripting (VBS)

Комментарии к статье:

Пока комментариев нет, ваш будет первым ;)

Добавить комментарий: