Vbs прочитать текстовый файл построчно
I can just use this file for writing but unable to read anything. Is there anyway by which we can open the file for reading and writing by just calling the OpenTextFile method only once.
I am really new to VBScript. I am only familiar with C concepts. Is there any link to really get me started with VBScript?
I guess I need to have a good knowledge of the objects and properties concepts.
Чтение файлов
Для чтения данных из файла используйте методы Read, ReadLine или ReadAll объекта TextStream. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Задача | Метод |
Чтение указанного количества символов из файла | Read |
Чтение полной строки из файла (до символа конца строки, но не включая его) | ReadLine |
Чтение всего содержимого файла | ReadAll |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine. Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.
В следующем примере показано, как открыть файл, записать в него данные, а затем прочитать их:
Первый способ
Воспользоваться OpenTextFile. Например, прочитаем файл test.txt
OpenTextFile(filename [,iomode [,create [,format]]])
filename - имя файла который необходимо прочитать
iomode - режим открытия файла (1 - только чтение, 2 - для записи (если уже существует, будет перезаписан), 8 - для добавления)
create - true - создать файл, если он не существует, false - не создавать
format - кодировка (-2 - кодировка ОС по умолчанию, -1 - Unicode, 0 - ASCII)
Непосредственно для чтения самих данных из текстового файла можно воспользоваться одним из следующих операторов:
- Read - чтение определенного количества символов независимо от конца строки (количество символов указывается в скобках после оператора)
- ReadLine - прочитать строку полностью до конца (до символов перевода строки), т.е. построчное чтение текстового файла
- ReadAll - прочитать весь файл целиком за раз, включая символы переноса строки.
Эти же приемы чтения файла можно использовать и в следующем способе.
9 Answers 9
You can create a temp file, then rename it back to original file:
Usage is almost the same using OpenTextFile:
- Option Explicit to help detect typos in variables.
- Function and Sub to improve readilbity and reuse
- Const so that well known constants are given names
Here's some code to read and write text to a text file:
.ReadAll seems to have a filesize limit that other methods don't. Or at least my script crashes on files over 1GB or so.
Do not use ReadAll for large files, but instead use the TextStream object to buffer the reads / writes.
You could open two textstreams, one for reading
and one for appending
The filestreamIN can read from the begining of the file, and the filestreamOUT can write to the end of the file.
Don't think so. you can only use openTextFile for reading ( 1 ), writing ( 2 ), or appending ( 8 ). Reference here.
If you were using VB6 instead of VBScript, you could do:
Using the Random mode. For example:
I am really new to vbscripting.I am just familiar with my C concepts. Can anyone please suggest me any link to get really get my vbscripting started. I guess i need to have a good knowledge on the objects and properties concepts.. Any suggestions??
pianoman,Thanks a lot..I had gone through the link already and just tells abt the basic operations.I want to get into a bit more deep like the usage of objects,classes.I am really new to these terms as such.
You could put it in an Excel sheet, idk if it'll be worth it for you if its needed for other things but storing info in excel sheets is a lot nicer because you can easily read and write at the same time with the
sorry if this answer isnt helpful, first time writing an answer and just thought this might be a nicer way for you
You could also read the entire file in, and store it in an array
Manipulate the array in any way you choose, and then write the array back to the file.
Almost a one liner, i.e. you could have went "file = Split(CreateObject(. ).OpenTextFile(. 1).ReadAll(), vbCrLf)" :)
Regardless of what you're trying to do there should be no need to read to and write to a file at the same time. It would also use more memory which should always be avoided. I'd suggest reading the entire file using the .ReadAll method and then close it and do whatever you need to do with the data (assuming you read the contents into a variable) and then do a write to the same file and overwrite the file. If you're concerned with having something go wrong when over-writing the current file you could always try to write it to a different file and throw an error if that doesn't work before trying to over-write the original.
Below is some simple code to execute this:
Welcome to Stack Overflow! Please be careful with linking to your own content on different sites, you don't want to be a spammer. You should be including the majority of the content here, and use the link only as a reference.
This is for create a text file
And this for read a text file
Linked
Related
Hot Network Questions
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.10.42085
Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).
Первый способ — это использование метода CreateTextFile. В следующем примере показано, как создать текстовый файл, используя этот метод: Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Второй способ — это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод: Третий способ — это использование метода OpenAsTextStream с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод:
Запись текстового файла на VBScript
Создать и записать текстовый файл можно использовав один из трех операторов:
Пример использования CreateTextFile
Второй параметр указывает перезаписать или нет файл, если он существует. Так же можно добавить 3-й параметр, который будет означать кодировку (True - Unicode и False - ASCII)
Пример использования OpenTextFile
Здесь использован режим записи 8, т.е. добавление в существующий файл дополнительных строк, при этом, если файла не существует, он будет создан, т.к. третий параметр True.
Пример использования OpenAsTextStream
Здесь мы создаем файл и записываем в него текст. Если файл уже существовал, он будет перезаписан.
Так же как и с чтением файла, есть несколько вариантов какие операторы использовать для записи:
- Write - записать текст в файл без символов перевода строки
- WriteLine - записать текст в файл и добавить символы перевода строки (построчная запись в файл)
- WriteBlankLines - записать в файл указанное количество пустых строк
Думаю, предложенных способов вполне достаточно для чтения / записи текстовых файлов. Пожелания и замечания оставляйте в комментариях ниже.
Работа с текстовыми файлами (параллельно можете почитать про редактор Notepad++) заключается в использовании объект TextStream сервера Windows Script Host, который позволяет производить последовательное считывание (строка за строкой) документа. Обработка файлов требует возможности считывать из них информацию и записывать в них данные. Для создания класса TextStream можно использовать следующие методы: CreateTextFile, OpenTextFile объекта FileSystemObject и OpenAsTextStream класса File.
Теперь давайте перейдем к рассмотрению свойств и методов объекта TextStream.
Чтение текстового файла на VBScript
Методы класса TextStream – работа с текстовыми Windows файлами
Close () – Закрывает документ после окончания записи в него данных.
Read (n) – Метод позволяет считать заданное количество символов (n), возвращает полученную строчку.
ReadAll () – Позволяет считать полностью все содержимое и вернуть полученный результат.
ReadLine () - Позволяет считать полностью строчку
Skip (n) – Метод полезен, если надо при считывании данных пропустить заданное количество символов (n).
SkipLine () - Метод полезен, если надо при считывании данных пропустить целую строку при работе с текстовым файлом.
Write (string) – Позволяет произвести запись строчки (string), без символа конца.
WriteBlankLines (n) - Записывает заданное количество (n) пустых строк (символы перевода строчки и возврата каретки)
WriteLine ([string]) - Позволяет произвести запись строки (string), вместе с символом конца строки). Если параметр string отсутствует, то в документ будет записываться пустая строка.
Ниже показаны два пример на языке VBScript и JScript. Примеры довольно простые, вы просто перетаскиваете элемент на иконку скрипта и вам будет показано содержимое файла.
Хорошо, с программирование закончили… Видим, что примеры очень простые. Кроме того, важно отметить, что для доступа TextStream нам не нужно создавать отдельную переменную . Это связано с тем, что данный класс доступен автоматически при работе с текстовыми файлами. Используя свойство Arguments мы можем обработать любой элемент, который перетащим на иконку скрипта, далее идет проверка условия: если количество передаваемых аргументов ровно нолю, то будет выведено диалоговое окно с предупреждением. Если число передаваемых аргументов больше ноля, то произойдет считывание содержимого и вывод полученного результата.
Спасибо за внимание. Автор блога Владимир Баталий
Работа с файлами Windows средствами Windows Script Host осуществляется с помощью объекта File и коллекции Files. Что бы получить доступ к классу _File_ используется метод GetFile объекта FileSystemObject. При работе с файлами для доступа к коллекции Files используется одноименное свойства объекта Folder.
Давайте рассмотрим соответствующие свойства и методы класса _File_.
Добавление данных в файл
- Открыть текстовый файл
- Записать данные
- Закрыть файл
Для записи данных в текстовый файл используйте методы Write, WriteLine или WriteBlankLines объекта TextStream, в зависимости от задач, описанных в приведённой ниже таблице:
Задача | Метод |
Запись данных в текстовый файл без символа перехода на новую строку в конце | Write |
Запись данных в текстовый файл с символом перехода на новую строку в конце | WriteLine |
Запись одной или более пустых строк в открытый текстовый файл | WriteBlankLines |
Для закрытия текстового файла используйте метод Close объекта TextStream. Закрыть файл можно также методом Close объекта FileSystemObject. Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.
В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами, затем файл закрывается:
Свойства объекта File – работа с файлами Windows
Attributes – Данное свойство дает возможность просмотреть или изменить атрибуты. Виды атрибутов, в скобках указано цифровое значение:
- Normal – Обычный, без установленных атрибутов (0).
- Readonly - Только чтение (1).
- Hidden - Скрытый (2).
- System – Системный (4).
- Directory - Папка или каталог (возможно, с атрибутом «только для чтения») (16).
- Archive – Архивный (32).
- Alias - Ярлык (1024).
- Compressed – Сжатый (только для Windows NT/2000) (2048).
Пользователь может комбинировать значения констант для свойства Attributes.
DateCreated – Дата и время создания. Только_чтение.
DateLastAccessed - Дата и время последнего обращения. Только_чтение.
DateLastModified - Дата и время последней модификации документа. Доступно только для чтения
Drive – Буква диска для устройства, на котором лежит документ. Только_чтение.
Name – При работе с файлами позволяет просмотреть или изменить их имя. Чтение_и_запись
ParentFolder – Возвращает путь к каталогу, в котором лежит документ. Только чтение.
Path - Путь к документу
ShortName - Короткое имя (например, 233_6E~3 ).
ShortPath - Короткий путь (например, C:\work\233_6E~3 ).
Size - Размер в байтах
Type – Позволяет получить информацию о типе.
Свойства класса TextStream – работа с текстовыми файлами
AtEndOfLine – При считывании информации свойство содержит логическое true, если был достигнут конец строки и false в противном случае. Только_чтение.
AtEndOfStream - При считывании информации содержит логическое true, если был достигнут конец и false в противном случае. Только_чтение.
Column – Позволяет при работе с текстовыми файлами получить номер колонки текущего символа. Только_чтение.
Line – Позволяет получить номер текущей строчки в документе. Только чтение.
Методы объекта File – работа с Windows файлами
Copy (destination [, overwrite]) – При работе с файлами Windows позволяет произвести его копирование в заданное место, destination задает файл, в который будет производиться копирование, нельзя использовать подстановочные символы (*,? и так далее), overwrite: значение TRUE – произвести замену, FALSE – нет. Вместо метода Сору можно использовать метод CopyFile.
Delete ([force]) – Позволяет удалить документ. Если параметр force равен false или не указан, то с помощью данного метода будет нельзя удалить элемент с атрибутом "только для чтения" (read-only), установка для force значения true позволит сразу удалять такие элементы. Вместо метода Delete можно использовать метод DeleteFile (FileSystemObject).
Move (destination) – При работе с файлом Windows, метод позволяет переместить его в другое место, destination определяет место назначения; подстановочные знаки в имени недопустимы. Вместо метода Move можно использовать MoveFile (FileSystemObject).
OpenAsTextStream ([iomode, [format] ]) – Открывает файл, метод вернет класс TextStream, используя который можно производить чтение, запись или добавление данных в текстовый файл, iomode задает режим ввода/вывода и может принимать те же значения, что и одноименный параметр в методе OpenTextFile, format определяет формат (ASCII (0) или Unicode(1)). Открыть текстовый файл для чтения можно также с помощью метода OpenTextFile (FileSystemObject).
Ниже приведен пример работы с файлами, а именно, чтение атрибутов, дата создания, изменения и последнего обращения.
Первый сценарий написан на языке VBScript, а второй на языке JScript, по умолчанию анализируется C:\\Autoexec.bat, но вы можете изменить это значение или просто перетянуть документ на значок сценария.
Пример на языке vbscript:
' ************************************************************************** ' Класс File ' Работа с файлами Windows ' rabota-s-fajlami.vbs ' ******************************************************************************** Option Explicit Dim fso, oFile, objArgs, Text1, attrib, file, title Title = "Работа с Windows файлами" ' документ для анализа file = "C:\Autoexec.bat" Set objArgs = WScript.Arguments ' В качестве анализа можно просто перетянуть документ на значок сценария If objArgs.Count > 0 Then file = objArgs(0) Set fso = WScript.CreateObject("Scripting.FileSystemObject") ' Проверяем, существует ли файл If fso.FileExists(file) Then Set oFile = fso.GetFile(file) ' Получаем информацию Text1 = "Документ: " & vbTab & oFile.Name & vbCrLf & "Создан: " & vbTab & oFile.DateCreated & vbCrLf & "Изменен: " & vbTab & oFile.DateLastModified & vbCrLf & "Последнее обращение: " & vbTab & oFile.DateLastAccessed & vbCrLf & "Атрибуты " & vbTab attrib = oFile.Attributes ' Это атрибут "только для чтения". If (attrib And &H01) > 0 Then Text1 = Text1 & "r " ' "скрытый". If (attrib And &H02) > 0 Then Text1 = Text1 & "h " ' "системный". If (attrib And &H04) > 0 Then Text1 = Text1 & "s " ' "архивный". If (attrib And &H20) > 0 Then Text1 = Text1 & "a " ' "сжатый". If (attrib And &H800) > 0 Then Text1 = Text1 & "c " MsgBox Text1, vbOKOnly + vbInformation, Title Else WScript.Echo "Ошибка " & file & " не найден" End If
Пример на языке JScript:
// ************************************************************************** // Класс File // Работа с файлами Windows // rabota-s-fajlami.js // ******************************************************************************** // документ для анализа var file = "C:\\Autoexec.bat"; var Title = "Работа с Windows файлами"; var vbOKOnly = 0; var vbInformation = 64; var Text; var objArgs = WScript.Arguments; var attrib; // В качестве анализа можно просто перетянуть документ на значок сценария if (objArgs.length > 0) file = objArgs(0); var fso = WScript.CreateObject("Scripting.FileSystemObject"); WshShell = WScript.CreateObject("WScript.Shell"); // Проверяем, существует ли файл if (!fso.FileExists(file)) < WScript.Echo("Ошибка ", file, " не найден"); WScript.Quit(1); >var j = fso.GetFile(file); // Получаем информацию Text = "Документ: \t\t" + j.name + "\n" + "Создан: \t\t" + j.DateCreated + "\n"+ "Изменен: \t\t" + j.DateLastModified + "\n"+ "Последнее обращение: \t" + j.DateLastAccessed + "\n"; // Декодировать атрибуты. Text += "Атрибуты \t\t"; attrib = j.Attributes; if ((attrib & 0x01) != 0) Text += "r "; if ((attrib & 0x02) != 0) Text += "h "; if ((attrib & 0x04) != 0) Text += "s "; if ((attrib & 0x20) != 0) Text = "a "; if ((attrib & 0x800) != 0) Text += "c "; WshShell.Popup(Text,0,Title, vbOKOnly + vbInformation);
И так, программирование примеров закончено, теперь давайте рассмотрим сам программный код. По сути, вся работа с Windows файлами заключается в анализе Autoexec.bat, но это по умолчанию, так как сценарии обрабатывают передаваемые параметры, поэтому мы можем перетянуть на значок скрипта любой другой документ для его анализа. В конечно итоге будет выводится базовая информация: тип, дата создания, дата изменения и так далее.
Спасибо за внимание. Автор блога Владимир Баталий
Перемещение, копирование и удаление файлов
Объектная модель FSO имеет для каждой из операций перемещения, копирования или удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Задача | Метод |
Перемещение файла | File.Move или FileSystemObject.MoveFile |
Копирование файла | File.Copy или FileSystemObject.CopyFile |
Удаление файла | File.Delete или FileSystemObject.DeleteFile |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается в него некоторая информация. Затем файл перемещается в директорию с именем \tmp, копируется в директорию \temp, а затем удаляются копии из обеих директорий.
Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.
Работа с текстовыми файлами по-прежнему актуальна. Эта небольшая заметка для того, чтобы быстро вспомнить как записать или прочитать текстовый файл на VBScript.
Второй способ
Использовать GetFile и OpenAsTextStream. Принцип чтения такой же как и в первом способе, просто другой вариант открытия файла.
В скобках оператору OpenAsTextStream передается режим открытия файла iomode, который описан выше. Так же можно передать второй параметр, который будет означать кодировку format.
Читайте также: