В данной статье я расскажу про работу с файлами средствами VBS при помощи объекта FSO и File . В принципе все методы и свойства показанные здесь очень схожи с теми, что были в предыдущем уроке про работу с папками. Я бы даже сказал, что объект File — брат близнец объекта Folder. Данный урок будет полезен при создании VBS cтиллера для кражи паролей . Ну что, приступим.
Опять напомню, что для работы нам понадобиться вызвать объект FileSystemObject . Без него наш сценарий VBS работать не будет.
CopyFile
— копирует один или несколько файлов. Возможно использовать подстановочные знаки: “*” – любое количество символов и “?” – любой один символ.
Синтаксис:
CopyFile(Source, Destination [, Overwrite])
MoveFile
— перемещает один или несколько фалов. Возможно использовать подстановочные символы. Если перемещаемый файл уже существует или является файлом в Destination, то выдаст ошибку.
Синтаксис:
MoveFile(Source, Destination)
DeleteFile
— Удаляет один или несколько файлов. Можно использовать подстановочные знаки.
Синтаксис:
DeleteFile(Filespec [, Force])
А теперь наслаждаемся примером:
"Урок VBScript №13: "Работа с файлами (FSO) "file_1.vbs "******************************************************** Dim FSO, Text Set FSO = CreateObject("Scripting.FileSystemObject") FSO.CreateFolder "Папка с файлами" FSO.CreateFolder for i=1 to 9 Set Text = FSO.CreateTextFile(".\Папка с файлами\text_" & i & ".txt") next Text.Close MsgBox "Появилось 9 файлов и 1 папка в созданной папке - Папка с файлами" & vbCrlf & "Сейчас файлы будут скопированы в папку - Подкаталог" FSO.CopyFile ".\Папка с файлами\text_*", ".\Папка с файлами\Подкаталог", 0 MsgBox "файлы скопированы" & vbCrlf & "Сейчас произойдёт удаление старых файлов" FSO.DeleteFile ".\Папка с файлами\text*.txt", 1 MsgBox "Старые файлы удалены" & vbCrlf & "Перемещение новых файлов обратно" FSO.MoveFile ".\Папка с файлами\Подкаталог\*.txt", ".\Папка с файлами" MsgBox "Перемещение новых файлов обратно закончено" & vbCrlf & "Сейчас произодёт удаление всех файлов и папок" FSO.DeleteFolder ".\Папка с ф?йл*", 0
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_1.vbs "******************************************************** Dim FSO , Text FSO . CreateFolder "Папка с файлами" FSO . CreateFolder ".\Папка с файлами\Подкаталог" for i = 1 to 9 Set Text = FSO . CreateTextFile (".\Папка с файлами\text_" & i & ".txt" ) next Text . Close MsgBox "Появилось 9 файлов и 1 папка в созданной папке - Папка с файлами" & vbCrlf & "Сейчас файлы будут скопированы в папку - Подкаталог" FSO . CopyFile ".\Папка с файлами\text_*" , ".\Папка с файлами\Подкаталог" , 0 MsgBox "файлы скопированы" & vbCrlf & "Сейчас произойдёт удаление старых файлов" FSO . DeleteFile ".\Папка с файлами\text*.txt" , 1 MsgBox "Старые файлы удалены" & vbCrlf & "Перемещение новых файлов обратно" FSO . MoveFile ".\Папка с файлами\Подкаталог\*.txt" , ".\Папка с файлами" MsgBox "Перемещение новых файлов обратно закончено" & vbCrlf & "Сейчас произодёт удаление всех файлов и папок" FSO . DeleteFolder ".\Папка с ф?йл*" , 0 |
GetBaseName — Вернёт имя указанного файла без расширения.
GetExtensionName — Возвращает расширение указанного файла.
GetFileName — Вернёт имя файла вместе с его расширение.
GetParentFolderName — Вернёт путь к указанному файлу.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_2.vbs "******************************************************** Dim FSO, File1, File2, File3, File4 Set FSO = CreateObject("Scripting.FileSystemObject") File1 = FSO.GetBaseName("C:\Papka\file.txt") File2 = FSO.GetExtensionName("C:\Papka\file.txt") File3 = FSO.GetFileName("C:\Papka\file.txt") File4 = FSO.GetParentFolderName("C:\Papka\file.txt") MsgBox File1 & vbCrlf & File2 & vbCrlf & File3 & vbCrlf & File4
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_2.vbs "******************************************************** Dim FSO , File1 , File2 , File3 , File4 Set FSO = CreateObject ("Scripting.FileSystemObject" ) File1 = FSO . GetBaseName ("C:\Papka\file.txt" ) File2 = FSO . GetExtensionName ("C:\Papka\file.txt" ) File3 = FSO . GetFileName ("C:\Papka\file.txt" ) File4 = FSO . GetParentFolderName ("C:\Papka\file.txt" ) MsgBox File1 & vbCrlf & File2 & vbCrlf & File3 & vbCrlf & File4 |
FileExists — Проверяет наличие файла. Вернёт True если он есть и False в противном случае.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_3.vbs "******************************************************** Dim FSO, File Set FSO = CreateObject("Scripting.FileSystemObject") File = FSO.FileExists("C:\Windows\WindowsUpdate.Log") MsgBox "Файл WindowsUpdate.txt существует = " & File
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_3.vbs "******************************************************** Dim FSO , File Set FSO = CreateObject ("Scripting.FileSystemObject" ) File = FSO . FileExists ("C:\Windows\WindowsUpdate.Log" ) MsgBox "Файл WindowsUpdate.txt существует = " & File |
GetTempName — Генерирует случайное имя файла, которое можно будет использовать для создания временных файлов.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_4.vbs "******************************************************** Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox FSO.GetTempName()
GetFileVersion — Возвращает версию исполняемого файла.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_5.vbs "******************************************************** Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") MsgBox FSO.GetFileVersion("C:\Windows\write.exe") MsgBox FSO.GetFileVersion("C:\Program Files\WinRAR\WinRAR.exe")
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_5.vbs "******************************************************** Dim FSO Set FSO = CreateObject ("Scripting.FileSystemObject" ) MsgBox FSO . GetFileVersion ("C:\Windows\write.exe" ) MsgBox FSO . GetFileVersion ("C:\Program Files\WinRAR\WinRAR.exe" ) |
GetFile — Вернёт объект «File» из указанного пути.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_6.vbs "******************************************************** Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile("C:\File.txt") MsgBox File
На этом непосредственно с FSO мы закончили и теперь давайте перейдём к объекту «File»
Attributes
— Вернёт атрибуты (набор флагов) файла.
Пример смотрите в статье « » — Всё аналогично, Но вместо «GetFolder»
используем «GetFile»
.
DateCreated — Вернёт дату создания файла
DateLastAccessed — Возвращает дату последнего доступа к файлу.
DateLastModified — Вернёт дату последней модификации (Редактирования) файла.
Drive — Название диска (объект «Drive») на котором расположен файл.
Name — Вернёт имя файла
ParentFolder — Вернёт объект «Folder» родительского каталога.
Path — Вернёт полный путь к файлу.
ShortName — Возвращает короткое имя файла в формате 8.3
ShortPath — Вернёт короткий путь к фалу в формате 8.3
Size — Вернёт размер файла.
Type — Вернёт тип файла.
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_6.vbs "******************************************************** Dim FSO, File Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.GetFile("C:\Windows\AppCompat\Appraiser\GatedDefaultCache.bin") MsgBox "Дата создания - " & File.DateCreated & vbCrLf _ & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf _ & "Дата последней модификации - " & File.DateLastModified & vbCrLf _ & "Диск - " & File.Drive & vbCrLf _ & "Имя файла - " & File.Name & vbCrLf _ & "Родительский каталог - " & File.ParentFolder & vbCrLf _ & "Путь к файлу - " & File.Path & vbCrLf _ & "Короткое имя 8.3 - " & File.ShortName & vbCrLf _ & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf _ & "Тип файла - " & File.Type & vbCrLf _ & "Размер файла в байтах - " & File.Size
"******************************************************** "Урок VBScript №13: "Работа с файлами (FSO) "file_6.vbs "******************************************************** Dim FSO , File Set FSO = CreateObject ("Scripting.FileSystemObject" ) Set File = FSO . GetFile ("C:\Windows\AppCompat\Appraiser\GatedDefaultCache.bin" ) MsgBox "Дата создания - " & File . DateCreated & vbCrLf _ & "Дата последнего доступа - " & File . DateLastAccessed & vbCrLf _ |
Имеются две основных категории операций с файлами:
Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).
Первый способ - это использование метода CreateTextFile
Dim fso, f1 Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:\testfile.txt", True) Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Второй способ - это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting . В следующем примере показано, как создать текстовый файл, используя этот метод:
Dim fso, ts Const ForWriting = 2 Set fso = CreateObject("Scripting. FileSystemObject") Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True) Третий способ - это использование метода OpenAsTextStream с набором флагов ForWriting . В следующем примере показано, как создать текстовый файл, используя этот метод: Dim fso, f1, ts Const ForWriting = 2 Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile ("c:\test1.txt") Set f1 = fso.GetFile("c:\test1.txt") Set ts = f1.OpenAsTextStream(ForWriting, True)
Однажды создав текстовый файл, вы можете добавлять в него данные, для чего нужно выполнить три действия:
Для записи данных в текстовый файл используйте методы Write , WriteLine или WriteBlankLines объекта TextStream , в зависимости от задач, описанных в приведённой ниже таблице:
Для закрытия текстового файла используйте метод Close объекта TextStream . Закрыть файл можно также методом Close объекта FileSystemObject .
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы)
для перевода курсора в начало новой строки (возврат каретки/перевод строки).
Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.
В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами, затем файл закрывается:
Sub CreateFile() Dim fso, tf Set fso = CreateObject("Scripting.FileSystemObject") Set tf = fso.CreateTextFile("c:\testwritefile.txt", True) " Записать строку с переводом на новую строку. tf.WriteLine("Тестирование 1, 2, 3.") " Записать три пустых строки в файл. tf.WriteBlankLines(3) " Записать строку tf.Write ("Это тест") tf.Close End Sub
Для чтения данных из файла используйте методы Read , ReadLine или ReadAll объекта TextStream . Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine . Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.
В следующем примере показано, как открыть файл, записать в него данные, а затем прочитать их:
Sub ReadFiles Dim fso, f1, ts, s Const ForReading = 1 Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:\testreadfile.txt", True) " Записать строку f1.WriteLine "Hello World" f1.WriteBlankLines(1) f1.Close " Прочитать содержимое файла Set ts = fso.OpenTextFile("c:\testreadfile.txt", ForReading) s = ts.ReadLine MsgBox "Содержимое файла = "" & s & """ ts.Close End Sub
Объектная модель FSO имеет для каждой из операций перемещения, копирования или удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается в него некоторая информация. Затем файл перемещается в директорию с именем \tmp, копируется в директорию \temp, а затем удаляются копии из обеих директорий.
Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.
Sub ManipFiles Dim fso, f1, f2, s Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:\testfile.txt", True) " Записать строку f1.Write ("This is a test.") " Закрыть файл для записи f1.Close " Получиь дескриптор файла в корневом каталоге C:\. Set f2 = fso.GetFile("c:\testfile.txt") " Переместить файл в каталог \tmp f2.Move ("c:\tmp\testfile.txt") " Копировать файл в каталог \temp. f2.Copy ("c:\temp\testfile.txt") " Получить дескрипторы файлов Set f2 = fso.GetFile("c:\tmp\testfile.txt") Set f3 = fso.GetFile("c:\temp\testfile.txt") " Удалить файлы f2.Delete f3.Delete MsgBox "Все операции выполнены!" End Sub
Итак, теперь мы добрались до работы с файлами.
Как мы уже говорили, В VBS для работы с файловой системой существует FileSystemObject .
При помощи FSO можно работать с файлами. Алгоритм начала работы такой:
1. Объявляем переменную. Не обязательно такое же название, но оно наиболее логичное. А ещё, ваш код будет понятнее для других.
Dim FSO
2. Записываем в переменную FSO копию объекта FileSystemObject, который предназначен для работы с файловой системой Windows
Теперь, давайте ознакомимся с небольшим арсеналом методов:
FSO.GetBaseName(ПутьКФайлу) — Вернёт имя файла без расширения
FSO.GetExtensionName(ПутькФайлу) — Вернёт расширение файла
FSO.GetFileName(ПутьКФайлу) — Вернёт имя файла с расширением
FSO.GetParentFolderName(ПутьКФайлу) — Вернёт каталог, в котором находится файл
FSO.FileExists(ПутьКФайлу) — Проверяет, существует ли файл. Если да, то значение True.
FSO.GetTempName() — Возвращает случайное имя для временного файла
Для получения доступа к файлу необходимо выполнить fso.GetFile(ПутьКФайлу) в какую либо переменную. Например:
SET File=fso.GetFile(«C:\q1\q1.txt»)
File.Copy(ПолныйПуть) — Копировать файл в указанное место. Путь необходимо указывать полный, с названием файла и его расширением.
Например: File.Copy(«C:\q1\new\q1.txt»)
Так же мы можем:
File.Move (ПолныйПуть) — Перемещаем файл
File.Delete — удаляем полученный файл. Указывать путь не надо
Но самое полезное — работа с текстовым файлом, так называемое Text Stream.
Итак, работа с текстом.
Не забываем, что в любом случае код наш начнётся с
Dim FSO
Set FSO=CreateObject(«Scripting.FileSystemObject»)
Теперь, давайте рассмотрим наши возможности:
1. Создание текстового файла
Set File=FSO.CreateTextFile(полный_путь_к_файлу)
2. Открытие текстового файла
Set txtfile = fso.OpenTextFile(«c:\test.txt»)
3. Чтобы добавлять в файл текст, нужно его открыть для записи
Set ts = fso.OpenTextFile(«c:\test.txt», ForWriting, True )
Set tfile = fso.GetFile(«c:\test1.txt»)
Set tf = tfile.OpenAsTextStream(ForWriting, True)
Теперь, давайте разберёмся, как записывать в файл текст. Для этого есть следующие методы:
Write
— записывает символы в файл.
WriteLine
— записывает строку в файл.
WriteBlankLines(число)
— записывает пустые строки в файл.
Skip(число)
SkipLine
— пропускает строку.
Давайте приведём пример создания файла и записи в него текста.
Как мы видим, строки 4, 5 и 6 запишут в одну строчку «Раз Два Три!». 7 строчка вставит 3 пустых строки, а 8 строчка кода добавит в файл строчку «Ёлочка гори!!» и перейдёт на след. строку. Ну и 9 строчка закроет файл.
Теперь поговорим про чтение из файла:
Read(число)
— читает указанное количество символов из файла.
ReadLine
— читает строку из файла.
ReadALL — читает всё содержимое
Skip(число)
— пропускает нужное число символов в строке.
SkipLine
— пропускает строку.
Приведём пример считывания текста из файла:
А так же есть не менее полезные вещи:
AtEndOfLine
— Определяет достигнут ли конец строки(Boolean).
AtEndOfStream
— Определяет достигнут ли конец файла(Boolean).
Column
— номер текущего символа в строке.
Line
— номер текущей строки.
Первые два метода можно использовать для условий того же Do While или Do Until. Например:
Do While Not File.AtEndOfLine
Последние два метода удобно использовать для контролирования процесса считывания, например чтобы при поиске какой либо информации в момент положительного результата знать, в какой же строчке мы нашли искомый текст и на каком символе. Это позволит минимизировать последующие затраты на заводимые переменные и на действия с ними.
Задача1: Дан текстовый файл со списком литературы. Заменить определённые числа в нём и сохранить изменение.
Задача2: Создать текстовый файл, заполненный случайными символами. Вывести его содержимое.
Задача3: Дан текстовый файл, найти в нём какие-либо символы и вывести, в какой строке и на каком месте они стоят.
Задача4: Осуществить поиск директории и вывести процесс выполнения в новый текстовый файл, после чего вывести его содержимое.
Мы надеемся, что помогли Вам решить проблему с файлом VBS. Если Вы не знаете, где можно скачать приложение из нашего списка, нажмите на ссылку (это название программы) - Вы найдете более подробную информацию относительно места, откуда загрузить безопасную установочную версию необходимого приложения.
Посещение этой страницы должно помочь Вам ответить конкретно на эти, или похожие вопросы:
Если после просмотра материалов на этой странице, Вы по-прежнему не получили удовлетворительного ответа на какой-либо из представленных выше вопросов, это значит что представленная здесь информация о файле VBS неполная. Свяжитесь с нами, используя контактный формуляр и напишите, какую информацию Вы не нашли.
Поводов того, что Вы не можете открыть файл VBS может быть больше (не только отсутствие соответствующего приложения).
Во-первых
- файл VBS может быть неправильно связан (несовместим) с установленным приложением для его обслуживания. В таком случае Вам необходимо самостоятельно изменить эту связь. С этой целью нажмите правую кнопку мышки на файле VBS, который Вы хотите редактировать, нажмите опцию "Открыть с помощью"
а затем выберите из списка программу, которую Вы установили. После такого действия, проблемы с открытием файла VBS должны полностью исчезнуть.
Во вторых
- файл, который Вы хотите открыть может быть просто поврежден. В таком случае лучше всего будет найти новую его версию, или скачать его повторно с того же источника (возможно по какому-то поводу в предыдущей сессии скачивание файла VBS не закончилось и он не может быть правильно открыт).
Если у Вас есть дополнительная информация о расширение файла VBS мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся и отправьте нам свою информацию о файле VBS.
Если после установки необходимой программы из списка, Вы по-прежнему не можете открыть файл с расширением VBS, поводом может быть его повреждение. Решением может быть нахождение новой копии файла VBS, который Вы собираетесь открыть
В таком случае проще всего воспользоваться встроенными в операционную систему инструментами для связи файла VBS с приложениями для его обслуживания. Нажмите дважды на файл, которой не можете открыть, - операционная система покажет список программ, которые вероятнее всего совместимы с Вашим файлом VBS. Выберите одну из них, либо укажите на диске место, в котором Вы установили одно из предложений из нашего списка. Система Windows должна открыть файл VBS с помощью предварительно установленной программы.
Может случится так, что компьютерный вирус подшивается под файл VBS. В таком случае, наверняка не будет возможности открытия такого файла. Скачайте любую хорошую антивирусную программу и сканируйте файл VBS. Если антивирусная программа обнаружит опасные данные, это может обозначать индикацию файла VBS.