С помощью VBS можно манипулировать файлами, каталогами и, даже дисками. Конечно функционал весьма ограничен, но для рутинной работы вполне подходит.
Файлы
Для работы с файловой системой в VBS используется модель FSO.
создать
Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).
Первый способ — это использование метода CreateTextFile
|
1 2 3 |
Dim fso, f1 Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:\testfile.txt", True) |
Второй способ — это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting.
|
1 2 3 4 |
Dim fso, ts Const ForWriting = 2 Set fso = CreateObject("Scripting. FileSystemObject") Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True) |
Третий способ — это использование метода OpenAsTextStream с набором флагов ForWriting.
|
1 2 3 4 5 6 |
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) |
запись
Однажды создав текстовый файл, вы можете добавлять в него данные, для чего нужно выполнить три действия:
- Открыть текстовый файл
- Записать данные
- Закрыть файл
Для открытия существующего файла используйте метод OpenTextFile объекта FileSystemObject или метод OpenAsTextStream объекта File.
Для записи данных в текстовый файл используйте методы Write, WriteLine или WriteBlankLines объекта TextStream, в зависимости от задач, описанных в приведённой ниже таблице:
| Запись данных в текстовый файл без символа перехода на новую строку в конце | Write |
| Запись данных в текстовый файл с символом перехода на новую строку в конце | WriteLine |
| Запись одной или более пустых строк в открытый текстовый файл | WriteBlankLines |
Для закрытия текстового файла используйте метод Close объекта TextStream. Закрыть файл можно также методом Close объекта FileSystemObject. Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.Mexanik
|
1 2 3 4 5 6 7 8 9 10 11 12 |
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.
| Чтение указанного количества символов из файла | Read |
| Чтение полной строки из файла (до символа конца строки, но не включая его) | ReadLine |
| Чтение всего содержимого файла | ReadAll |
Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine. Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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 имеет для каждой из операций перемещения, копирования или удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
| Перемещение файла | File.Move или FileSystemObject.MoveFile |
| Копирование файла | File.Copy или FileSystemObject.CopyFile |
| Удаление файла | File.Delete или FileSystemObject.DeleteFile |
Создаём текстовый файл в корневом каталоге диска С, записываем в него некоторую информацию. Затем файл перемещаем в директорию с именем \tmp, копируем в директорию \temp, а затем удаляем копии из обеих директорий.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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 |
Дополнение:
To Write
Set objFileToWrite = CreateObject(“Scripting.FileSystemObject”).OpenTextFile(“C:\file.txt”,2,true)
objFileToWrite.WriteLine(data)
objFileToWrite.Close
Set objFileToWrite = Nothing
или
Sub writeTxtFile(fPath, str, mode) ‘пишет строку в текстовый файл
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set file = fso.OpenTextFile(fPath, mode, True)’create file
file.Write(str)
file.Close
End Sub
To Read the entire file
Set objFileToRead = CreateObject(“Scripting.FileSystemObject”).OpenTextFile(“C:\file.txt”,1)
strFileText = objFileToRead.ReadAll()
objFileToRead.Close
Set objFileToRead = Nothing
To Read line by line
Set objFileToRead = CreateObject(“Scripting.FileSystemObject”).OpenTextFile(“C:\file.txt”,1)
Dim strLine
do while not objFileToRead.AtEndOfStream
strLine = objFileToRead.ReadLine()
‘Do something with the line
loop
objFileToRead.Close
Set objFileToRead = Nothing
OpenTextFile parameters:
IOMode
1=Read
2=write
8=Append
Create (true,false)
Format (-2=System Default,-1=Unicode,0=ASCII)
Каталог
Для работы с каталогами в vbs-скрипте необходимо создать объект FileSystemObject, который предоставляет методы для создания, удаления и получения ссылок на каталоги. Например, метод .GetFolder(), принимая в качестве аргумента путь, возвращает объект папки Folder. Коллекции Files и SubFolders объекта Folder дают доступ ко всем дочерним файлам и папкам, находящимся в определенном каталоге. Это позволяет, например, рекурсивно обойти все вложенные в него элементы
создать
|
1 2 3 4 5 6 7 |
Set fso = CreateObject("Scripting.FileSystemObject") If fso.FolderExists(fPath) Then fso.CreateFolder(fPath) WScript.Echo "Folder " & Chr(34) & fPath & Chr(34) & " has been created." Else WScript.Echo "Folder " & Chr(34) & fPath & Chr(34) & " do not exists!" End If |
удалить
|
1 2 3 4 5 |
Set fso = CreateObject("Scripting.FileSystemObject") If fso.FolderExists(fPath) Then fso.DeleteFolder(fPath) WScript.Echo "Folder " & Chr(34) & fPath & Chr(34) & " has been deleted." End If |
Дополнение: