Vbs чтение текстового файла построчно

Обновлено: 07.07.2024

Scripts Thread, vbscript для чтения txt-файла и использования содержащейся в нем информации в качестве переменных в скрипте в программировании и веб-разработке; .

Обратная ссылка
Инструменты темы
Поиск темы

vbscript для чтения txt-файла и использования содержащейся в нем информации в качестве переменных в скрипте

Нужен vbscript для чтения txt-файла и использования содержащейся в нем информации в качестве переменных в скрипте. Пример txt файла ниже

Package_location=\\server\packages
SYSusername=sysbob
SYSpassword=654321
DBlocation=DBserver
DBUsername=dbbob
SYSpassword=123456

У меня есть этот скрипт, но я не знаю, как заставить его делать то, что я хочу

Константа для чтения = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile _
("c:\scripts\name and value.txt", ForReading)

Выполнять до objTextFile.AtEndOfStream
strNextLine = objTextFile.Readline
arrServiceList = Split(strNextLine , " name: " & arrServiceList(0)
For i = 1 to Ubound(arrServiceList) < br />Wscript.Echo "значение: " & arrServiceList(i)
Следующий
Цикл

Это делает циклический просмотр txt-файла и отображает его в эхо-окне

Итак, при чтении первой строки будет показано имя: Package_location, а затем значение:\\server\packages. Мне нужно взять значение из, скажем, Package_location и установить эту переменную,

Надеюсь, понятно

спасибо за любую помощь, которую вы можете оказать


Дата регистрации: февраль 2011 г. Местонахождение: Swindon Сообщений: 8 126 Поблагодарили: 985 Поблагодарили: 2 164 раз в 1 928 сообщениях Репутация: 741

Честно говоря, не понимаю, почему бы вам просто не поместить это в скрипт (если только их много?)

Но это зависит от того, всегда ли это одинаковое количество строк?

Если да, вы можете удалить цикл и просто циклически переключаться между файлами, связанными с автомобилями, но это не сработает, если файлы изменятся.

Если файлы изменяются, вы можете динамически создавать автомобили на лету, но это будет либо случайное имя, либо "слева от after_content">

В этом руководстве рассказывается, как преобразовать данные, считанные из текстового файла, в соответствующий тип данных в RhinoScript.

Проблема

Часто рабочий процесс использует текстовый файл, созданный вне Rhino, для изменения модели Rhino. Вы можете знать, как читать текстовый файл и анализировать его с помощью VBScript, но как насчет анализа текстового файла и присвоения значений переменной?

Решение

Рассмотрите следующую подпрограмму VBScript, которая читает текстовый файл:

Обратите внимание, что каждая строка, прочитанная из текстового файла, присваивается переменной strLine перед печатью.

Все, что читается из текстового файла с помощью VBScript, передается в виде строкового типа данных. Если вы хотите, чтобы что-то, что вы прочитали, было целым числом или числом с плавающей запятой, вам нужно преобразовать строку в этот тип данных. Например, если у вас есть текстовый файл:

Если вы используете VBScript для чтения этого файла, все три строки считываются как строки. Если вы хотите, чтобы первая строка читалась как целое число, а строка — как двойное, то вы можете использовать некоторые функции преобразования данных VBScript для преобразования строки в нужный тип данных. Например:

ПРИМЕЧАНИЕ: приведенный выше пример имеет ограничение, заключающееся в том, что вы должны знать, какие данные содержатся в каждой строке. Если вы не знаете, какие данные содержатся в каждой строке, рассмотрите возможность экспорта идентификатора типа данных вместе с данными из программы, сгенерировавшей файл. Таким образом, когда вы читаете строку из VBScript, вы будете знать, какие данные у вас есть.

< /tr>
Тип Значение Описание
vbEmpty 0 Неинициализированный (по умолчанию)
vbNull 1 Не содержит достоверных данных
vbInteger 2 Подтип Integer< /td>
vbLong 3 Длинный подтип
vbSingle 4< /td> Один подтип
vbSingle 5 Подтип Double
vbCurrency 6 Подтип валюты
vbDate 7 Подтип даты
vbString< /td> 8 Подтип строки
vbObject 9 Object
vbError 10 Ошибка подтип
vbBoolean 11 Булев подтип
vbVariant 12 Вариан t (используется только для массивов вариантов)
vbDataObject 13 Объект доступа к данным
vbDecimal 14 Десятичный подтип
vbByte 17 Подтип Byte
vbArray 8192 Массив

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

Теперь каждая строка в текстовом файле содержит как тип данных, так и сами данные. Используя функцию разделения VBScript, мы можем отделить тип данных от самих данных. Затем нужно просто протестировать типы данных, которые поддерживает наш скрипт, а затем выполнить правильное преобразование данных. Например:

В:
Здравствуйте, эксперт по сценариям! Как прочитать только последнюю строку текстового файла?
— BM
A:
Здравствуйте, BM. Если ты когда-нибудь захочешь узнать Привет, эксперт по сценариям! Чем отличается от других ежедневных колонок (например, интимная сестра), вот способ. Предположим, кто-то говорит в письме своей закадычной сестре:
Дорогая сестра
Моя жизнь в беспорядке, и мне нужно что-то с этим делать. Как я могу изменить свою жизнь и снова стать счастливым?
Отчаянные люди в Дейтоне
Моя дорогая сестра никогда не дала бы такого ответа отчаявшемуся человеку
Дорогой отчаявшийся человек
Ну, твоя жизнь не может быть лучше. Извините.
Как вы думаете, как сценарист отреагирует на вашу последнюю строчку о чтении текстового файла? бинго:
Дорогой BM
Ну, ты не можешь. Извините.
Подождите минутку, пожалуйста. Не уходи пока. Действительно, близкая сестра никогда бы не сказала: «Знаешь, отчаявшаяся, я ничего не могу сделать, чтобы сделать тебя счастливой. Но есть способ сделать вас счастливым. У сценаристов, впрочем, таких сомнений нет. Другими словами, мы не можем предоставить вам скрипт, который читает только последнюю строку текстового файла. Однако может показаться, что следующий скрипт читает только последнюю строку текстового файла:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Scripts\Test.txt", ForReading)
Делать до objFile.AtEndOfStream
strLine = objFile.ReadLine
Цикл
objFile.Close
Wscript.Echo strLine

Проблема заключается в том, что объект файловой системы (объект сценария, используемый для обработки текстовых файлов) знает только одно направление: вперед. Он должен начинаться в начале файла и может продолжаться только до конца файла. Вы не можете указать другую начальную позицию и не можете читать в обратном направлении (то есть с конца в начало).На самом деле, вы даже не можете перечитать файл: вы не можете перечитать файл, когда дойдете до конца файла, если только не закроете, а затем снова откроете его. Вот почему, когда дело доходит до текстовых файлов, учебное решение почти такое же.
Решение здесь заключается в том, что мы фактически читаем весь текстовый файл от начала до конца. Однако мы отслеживаем только последнюю прочитанную строку. В конце файла получаем переменную, содержащую значение последней прочитанной строки; это также последняя строка файла. Когда выводится значение переменной, создается впечатление, что мы читаем только последнюю строку (особенно, когда больше не с чем работать, скорость объекта файловой системы очень высока). Мы этого не сделали — мы на самом деле прочитали весь файл — но никто бы не узнал. Это будет нашим маленьким секретом.
Что касается самого кода, мы сначала определяем константу с именем «forreading» и устанавливаем ее значение «1»; мы будем использовать эту константу, чтобы сообщить «объекту файловой системы», что мы хотим открыть текстовый файл для чтения. Затем мы создаем Scripting.FileSystemObject и используем метод «opentextfile», чтобы открыть файл «C»: «scripts»\Test.txt. Далее идет следующий блок кода:

Что нам нужно здесь сделать, так это прочитать файл построчно до конца файла (то есть до конца файлового потока). Каждый раз, когда мы читаем строку, мы заменяем значение переменной «strline» только что прочитанным текстом. Например, предположим, что текстовый файл содержит три строки:
A

C
В нашем цикле мы читаем строку ﹣ 1, поэтому мы присваиваем значение ﹣ a ﹣ ﹣ strline. Вторая строка читается в следующем цикле, что означает, что значение ﹣ B ﹣ присваивается ﹣ strline. Перезапустите один раз и присвойте значение C для strline. Поскольку мы достигли конца файла, ﹣ строка ﹣ сохраняет значение ﹣ C, которое оказывается последней строкой файла. Затем закройте файл и повторите значение strline. Все, что мы знаем, это то, что все, что мы делаем, это читаем — Возвращаем — последнюю строку файла.
Да, это очень секретно.
Несомненно, с этим скриптом существует потенциальная проблема. Предположим, вы добавили несколько пустых строк в конец файла. Сценарий точно вернет null (нулевое значение) в качестве последней строки текстового файла. Это то, что он должен делать: ведь последняя строка файла пуста. Но предположим, что это какой-то лог-файл, и по какой-то причине приложение, создавшее лог, всегда ставит пустые строки в конец файла. В этом случае вас действительно может заинтересовать последняя непустая строка в файле. Вот модифицированный скрипт, который использует функцию len для проверки длины каждой прочитанной строки. Если длина равна ﹣ 0, это означает, что строка пустая и значение не сохраняется в переменной ﹣ strline ﹣ 0:

В предыдущем руководстве я рассказывал об «объектах соединения» в VBScript. В этом руководстве я расскажу вам о файловых объектах VBS, таких как VBScript CopyFile, DeleteFile, OpenTextFile, чтение текстового файла и запись в текстовый файл.

=> Ознакомьтесь со списком полных руководств по VBScipting в этой серии.

VBScript поддерживает различные типы объектов, среди которых файловые объекты. Объекты, которые помогают кодерам работать и работать с файлами, называются файловыми объектами.

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

Работа с файловыми объектами в VBScript

Я решил выбрать эту тему в качестве одной из тем серии руководств по VBScript только из-за ее важности. Файловый объект лежит в основе работы с файлами

Я постараюсь объяснить вам все различные коды, свойства и методы, которые необходимо написать для работы с файлами, чтобы вы могли легко написать код самостоятельно.

Начнем со свойств и методов, которые будут использоваться при работе с файлами, предоставляя доступ к таким операциям, как создание, удаление, перемещение и т. д. в файле. Следовательно, слишком важно понять их, прежде чем переходить к части кодирования.

Что вы узнаете:

Свойства и методы файлового объекта

Существуют различные свойства и методы, поддерживающие выполнение операций с файлом.

Список свойств выглядит следующим образом:

  • Атрибуты. Используется для определения количества атрибутов, поддерживаемых конкретным файлом.
  • DateCreated: возвращает дату и время создания определенного файла.
  • DateLastAccessed: возвращает дату и время последнего доступа к конкретному файлу.
  • DateLastModified: возвращает дату и время последнего изменения определенного файла.
  • Диск: возвращается диск, на котором находится конкретный файл.
  • Имя: возвращает имя конкретного файла.
  • ParentFolder: возвращает родительскую папку определенного файла, как если бы файл хранился на диске C, поэтому он возвращает C:\.
  • Путь: возвращается путь к определенному файлу, как если бы файл хранился на диске C, а имя файла было тестовым, поэтому возвращается C:\test.txt.
  • Размер: возвращает размер определенного файла в байтах.
  • Тип: возвращает тип конкретного файла, т. е. описание типа файла, например файла, оканчивающегося на .vbs, для которого будет возвращено «VBScript».

Это свойства файлового объекта. Также существует Files Object (это коллекция файловых объектов) и давайте посмотрим на его свойства следующим образом:

  • Item : это свойство используется для определения значения элемента, который передается в качестве параметра. Когда конкретное имя файла передается в качестве элемента, возвращается полное имя файла, включая его местоположение.< /li>
  • Count : используется для определения количества объектов File, присутствующих в коллекции.

Теперь давайте перейдем к методам.

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

  • CopyFile/CopyFolder: используется для копирования указанного файла/папки в определенное место.
  • DeleteFile/DeleteFolder: используется для удаления определенного указанного файла/папки.
  • MoveFile/MoveFolder: используется для перемещения определенного файла/папки в новое место назначения, как указано.
  • OpenTextFile: используется для открытия файла, указанного в качестве параметра, и возвращается как экземпляр текстового потока, чтобы он мог вести себя как текстовый файл, и над ним можно было выполнять операции чтения, записи и добавления. . Если вы хотите открыть текстовый файл только для чтения, вы можете передать постоянное значение 1, 2 в случае записи и 8 для добавления.
  • CreateTextFile: используется для создания текстового файла, который указывается в качестве параметра и возвращается как экземпляр текстового потока, чтобы он мог вести себя как текстовый файл и выполнять операции чтения, записи и т. д. .
  • FileExists/FolderExists/DriveExists: используется для проверки существования указанного файла/папки/диска. Это возвращает True, если он существует, иначе False.
  • GetFile/GetFolder/GetDrive: используется для получения объекта файла/папки/диска указанного файла/папки/диска, указанного в качестве параметра.

Вышеупомянутые свойства и методы используются при работе с файловыми объектами.

Теперь давайте перейдем к практической реализации и посмотрим, как работают эти объекты.

Копирование файла с помощью файлового объекта

Ниже приведен код для копирования файла:

Set obj = createobject("Scripting.FileSystemObject") 'Создание файлового объекта
Dim loc,loc1 'Объявление переменных
src="C:\app\pictures\img1.jpg" 'Упоминание исходное расположение копируемого файла
dest=”C:\app1” 'Упоминание места назначения
obj.CopyFile src,dest 'Метод CopyFile используется для копирования файла
Set obj= Ничего 'Освобождение файлового объекта

Давайте посмотрим, как это работает:

  • Во-первых, объект FileObject с именем obj создается с использованием ключевого слова createobject и определяется объект файловой системы в параметре.
  • Затем объявляются переменные для указания места назначения и источника копируемого файла.
  • Затем используется метод CopyFile для копирования исходного файла в указанное выше место назначения.
  • Наконец, объект — obj освобождается с помощью ключевого слова «Ничего».

Удаление файла с помощью файлового объекта

Ниже приведен код для удаления файла:

Set obj = createobject("Scripting.FileSystemObject") 'Создание файлового объекта
Dim filename1 'Объявление переменных
filename1="C:\app\pictures\img1.jpg" 'Упоминание имени и расположение удаляемого файла
obj.DeleteFile filename1 'Метод DeleteFile используется для удаления файла
Set obj=Nothing 'Освобождение объекта File

Давайте посмотрим, как это работает:

  • Во-первых, объект FileObject с именем obj создается с использованием ключевого слова createobject и определяется объект файловой системы в параметре.
  • Затем объявляется переменная для указания местоположения файла, который необходимо удалить.
  • Затем для удаления файла используется метод DeleteFile.
  • Наконец, объект — obj освобождается с помощью ключевого слова «Ничего».

Перемещение файла с помощью файлового объекта

Ниже приведен код для перемещения файла:

Set obj = createobject("Scripting.FileSystemObject") ‘Создание файлового объекта
Dim filename1,filename2 ‘Объявление переменных
filename1=»C:\app\pictures\img1.jpg” 'Упоминание имени и исходного местоположения файла, который нужно переместить
filename2=”C:\Users\img1.jpg” 'Упоминание имени и целевого местоположения файла, который нужно переместить
obj. MoveFile filename1,filename1 'Метод MoveFile используется для перемещения файла в место назначения
Set obj=Nothing 'Освобождение объекта File

Давайте посмотрим, как это работает:

  • Во-первых, объект файловой системы с именем «obj» создается с использованием ключевого слова «createobject» и определяется объект файловой системы в параметре.
  • Затем объявляются переменные для указания как исходного, так и целевого расположения перемещаемого файла.
  • Затем для перемещения файла используется метод MoveFileFile.
  • Наконец, объект — obj освобождается с помощью ключевого слова «Ничего».

Создание файла с использованием файлового объекта

Ниже приведен код для создания текстового файла:

Set obj = createobject("Scripting.FileSystemObject") 'Создание файлового объекта
src="C:\Users\Riya\file1.txt" 'Упоминание имени и расположения создаваемого файла
obj CreateTextFile src 'Метод CreateTextFile используется для создания файла
Set obj=Nothing 'Освобождение объекта File

Давайте посмотрим, как это работает:

  • Во-первых, объект FileObject с именем obj создается с использованием ключевого слова createobject и определяется объект файловой системы в параметре.
  • Затем объявляется переменная для указания имени и местоположения файла, который необходимо создать.
  • Затем используется метод CreateTextFile для создания упомянутого выше файла.
  • Наконец, объект — obj освобождается с помощью ключевого слова «Ничего».

Примечание. Точно так же Папка может быть создана, удалена и скопирована с помощью методов CreateFolder, DeleteFolder и CopyFolder соответственно.

Открытие текстового файла и запись текста с помощью файлового объекта

Ниже приведен код для записи текста в файл:

Set obj = CreateObject("Scripting.FileSystemObject") 'Создание файлового объекта
Const ForWriting = 2 'Определение постоянного значения для записи в файл
Set obj1 = obj.OpenTextFile("C: \app.txt», ForWriting) 'Открытие текстового файла и запись в него текста
obj1.WriteLine("Этот текст записан в файле") 'Текст написан методом WriteLine
obj1.Close 'Закрытие файла
Set obj=Nothing 'Освобождение объекта File

Давайте посмотрим, как это работает:

  • Во-первых, объект FileObject с именем obj создается с использованием ключевого слова createobject и определяется объект файловой системы в параметре.
  • Затем определяется постоянное значение для целей записи, поскольку VBScript не может автоматически обращаться к COM-объектам, поэтому требуется определить постоянное значение для передачи значения параметра записи в методе OpenTextFile.
  • Затем текстовый файл открывается с помощью метода OpenTextFile и выполняется операция записи.
  • Затем текст записывается в файл.
  • Затем файл закрывается.
  • Наконец, объекты — obj и obj1 — освобождаются с помощью ключевого слова «Ничего».

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

Чтение из текстового файла с использованием файлового объекта

Ниже приведен код для чтения текста из файла:

Set obj = CreateObject("Scripting.FileSystemObject") 'Создание файлового объекта
Const ForReading = 1 'Определение постоянного значения для чтения из файла
Set obj1 = obj.OpenTextFile("C: \app.txt», ForReading) 'Открытие текстового файла и чтение из него текста
Dim str,str1
str=obj1.ReadAll 'Весь текст из файла читается с помощью ReadAll
Msgbox str 'Содержимое файла будет отображаться через окно сообщения
Do while obj1.AtEndofStream 'Чтение строки текста с использованием Do Loop и ReadLine
str1=obj1.ReadLine
Msgbox str1
>Цикл
obj1.Close 'Закрытие файла
Set obj=Nothing 'Освобождение объекта файла

Давайте посмотрим, как это работает:

  • Во-первых, объект FileObject с именем obj создается с использованием ключевого слова createobject и определяется объект файловой системы в параметре.
  • Затем для целей чтения определяется постоянное значение, поскольку VBScript не может автоматически обращаться к COM-объектам. Следовательно, необходимо определить постоянное значение для передачи значения параметра чтения в метод OpenTextFile.
  • Затем текстовый файл открывается с помощью метода OpenTextFile и выполняются операции чтения.
  • Затем из файла считывается весь текст с помощью функции «ReadAll».
  • Еще один способ чтения из файла — построчный. Цикл Do используется для чтения текста из файла построчно с помощью «ReadLine».
  • Затем файл закрывается.
  • Наконец, объекты — obj и obj1 — освобождаются с помощью ключевого слова «Ничего».

Это некоторые из основных сценариев, которые следует правильно понимать.Они формируют основу для работы и имеют дело с кодами для обработки различных типов сценариев при работе с файловыми объектами в сценарии.

Ниже приведены различные типы примеров со ссылками на приведенные выше сценарии и темы.

Пример 1:

Использование свойств «Count» и «Item» объекта «Files» вместе с методом «GetFolder»

Вывод: C:\Users\Riya\riya.vbs
6 (при условии, что в папке доступно 6 файлов)

Example1

Пример 2:

Использование различных свойств и методов объекта «Файл»

Примечание: я использую методы Copy, Move и Delete вместо CopyFile, MoveFile и DeleteFile, потому что используется прямая ссылка на конкретный файл, который сохраняется в ‘obj1’.

Вывод: DateCreated файла: 30/12/2017 04:04:28
Атрибуты файла: 20
DateLastAccessed файла: 30/11/2017, 02:04:38
DateLastModified файла — 10.11.2017 06:06:48
Имя файла — Riya.vbs
Диск файла — C:
Родительская папка файла — C:\
Путь к файлу: C:\Users\Riya.vbs
Размер файла: 600
Тип файла: файл сценария VBScript

Example2

Заключение

Мы объяснили важность и эффективность использования файловых объектов VBScript, которые, в свою очередь, помогут вам легко работать со сценариями, связанными с файлами.

Читайте также: