Работа с содержимым файла




Лабораторная работа №4

Работа с сервером сценариев Windows Scripting Host. Работа с коллекцией FileSystemObject

 

Объект FileSystemObject

Для файловых операций применяется объект FileSystemObject.

Он не является прямым дочерним объектом WSH, а предназначен для использования совместно с языками сценариев. Вообще сами по себе языки сценариев VBS и JScript не могут работать с файлами и производить какие-либо действия над ними. Работать с файлами могут элементы ActiveX. Но и VBScript и JScript могут создавать объекты ActiveX (т.н. контейнеры объектов) и работать с ними. Для этого и используется FileSystemObject.

Для создания элемента ActiveX служит метод CreateObject. Создадим для работы экземпляр объекта FileSystemObject.

Set FSO = CreateObject(“Scripting.FileSystemObject”)

 

FileSystemObject (FSO) содержит следующие объекты и коллекции:

 

Объект/Коллекция Описание
FileSystemObject Основной объект. Содержит методы и свойства, которые позволяют создавать, удалять, получать информацию, и управлять дисками, папками и файлами. Многие методы связанные с этим объектом дублируются в других объектах FSO, которые предусматриваются для удобства.
Drive Объект. Содержит методы и свойства, которые позволяют собирать информацию о накопителях, имеющихся в системе, как например, имя диска и сколько свободного места на диске. Имейте в виду, что "диск" не обязательно является жестким диском, но может быть накопителем CD-ROM, виртуальным диском RAM, и так далее. Накопитель не должен обязательно присутствовать на данном компьютере, он может быть доступен и через сеть.
Drives Коллекция. Включает в себя все диски на данном компьютере независимо от их типа (HDD, CD-ROM и т.д.).
File Объект. Содержит методы и свойства, которые позволяют создавать, удалять, или перемещать файл. Также получают сведения об имени файла, пути к нему, и другие свойства.
Files Коллекция. Содержит список всех файлов, находящихся в данной папке.
Folder Объект. Содержит методы и свойства, которые позволяют создавать, удалять, или перемещать папки. Также получают сведения об имени папки, пути к ней, и другие свойства.
Folders Коллекция. Содержит список всех папок, находящихся в конкретной папке.
TextStream Объект. Позволяет читать и делать записи в текстовые файлы.

 

Работа с файлами

FileSystemObject (далее FSO) предоставляет некоторые возможности для работы с текстовыми файлами. Можно создавать, удалять, копировать и перемещать файлы.

Для создания текстового файла применяют метод CreateTextFile. Синтаксис:

FSO.CreateTextFile([, overwrite[, unicode]])

где:

filename – имя создаваемого файла.

Необязательные параметры:

owerwrite – логический параметр (true или false), указывает, перезаписывать ли уже существующий файл таким именем.

unicode – логический параметр (true или false), определяющий кодировку создаваемого файла. По умолчанию используется кодировка ASCII. Если принимает значение true – то файл создается в кодировке unicode.

 

Dim FSO, MyFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", true)

Для проверки существования файлов служит метод FileExists.

VBScript:

Set FSO = CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists("c:\autoexec.bat")) Then
MsgBox "Файл autoexec.bat существует"
Else
MsgBox "Файл autoexec.bat не существует"
End If

Для других операций над файлом, таких как копирование, перемещение и удаление файл должен быть сначала “получен” методом GetFile.

VBScript:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.GetFile(“MyFile.txt”)

Для копирования, перемещения и удаления файлов объект FSO предоставляет несколько методов, в зависимости от того какой объект будет использоваться для операций FSO или file. Они показаны в следующей таблице.

 

Действие Объект.Метод
Перемещение File.Move или FileSystemObject.MoveFile
Копирование File.Copy или FileSystemObject.CopyFile
Удаление File.Delete или FileSystemObject.DeleteFile

Копирование файлов.

 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.CreateTextFile("c:\test.txt")
Set file2 = FSO.GetFile("c:\test.txt")
file2.Copy("c:\0\test1.txt")

Перемещение файлов осуществляется аналогично методу копирования.

Удаление файлов:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.CreateTextFile("test.txt")
'закрываем файл (см.работа с содержанием файла)
'если не закрыть файл, то он не может быть удален методом Delete
file1.Close

MsgBox "Файл создан"
Set file2 = FSO.GetFile("test.txt")
file2.Delete
MsgBox "Файл удален"

Свойства файла

Синтаксис:

object.Свойство

где

object - File объект

 

С помощью объекта FSO нам доступны такие свойства файла, как его размер, время создания и т.д.

Свойство Описание
Attributes позволяет просмотреть или установить атрибуты файла.
DateCreated содержит дату и время создания файла. Доступно только для чтения
DateLastAccessed содержит дату и время последнего обращения. Доступно только для чтения
DateLastModified содержит дату и время последнего изменения. Доступно только для чтения
Drive cодержит букву диска для устройства, на котором находится файл. Доступно только для чтения
Name позволяет просмотреть и изменить имя файла. Доступно для чтения и записи
PaternFolder содержит объект Folderдля родительского каталога файла. Доступно только для чтения
Path содержит путь к файлу
ShortName содержит короткое имя файла (в формате 8.3)
ShortPath содержит путь к файлу, состоящий из коротких имен каталогов (в формате 8.3)
Size возвращает размер файла в байтах
Type возвращает информацию о типе файла

 

Set FSO = CreateObject("Scripting.FileSystemObject")

'получаем текущий файл:
Set file1 = FSO.GetFile(WScript.ScriptFullName)

'получаем размер:
fsize = file1.Size

MsgBox "Размер файла " & WScript.ScriptName & ": " & fsize &" килобайт"

Получив набор Files, можно извлечь из него объект «файл» и проанализировать его свойства, как показано в предыдущем примере. Свойство Name объекта File возвращает имя файла, а свойство Attributes — двоичное значение, описывающее атрибуты файла.

Константа Значение Описание
Normal   Обычный файл без установленных атрибутов.
Readonly   Файл с атрибутом «только для чтения».
Hidden   Скрытый файл.
System   Системный файл.
Directory   Папка или каталог (возможно, с атрибутом «только для чтения»).
Archive   Файл с атрибутом «архивный», модифицированный со времени последнего резервного копирования.
Alias   Ярлык (.Lnk-файл).
Compressed   Сжатый файл (только для Windows NT/2000).

 

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

 

' Файлы с атрибутом “Только для чтения”, имеющиеся в папке:

For each d in f.files

If d.Attributes and 1 Then

m = m & Chr(10) & d.Name

End If

Next

MsgBox m

 

Работа с содержимым файла

Для работы с содержимым фала используется объект TextStream и его методы.
Работа по изменению содержимого текстового файла состоит из нескольких действий:

1. Открытие файла
2. Работа с содержимым
3. Закрытие файла.

1. Открытие файла может осуществляться несколькими методами FSO - OpenTextFile и OpenAsTextStream.
Оба данных метода работают одинаково, только при применении метода OpenAsTextStream требуется, чтобы текстовый файл уже существовал, в то время как OpenTextFile, если открываемый файл не существует, может создать его.

OpenTextFile

Синтаксис:

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

где

filename – имя открываемого файла

Необязательные параметры:

iomode – режим открытия файла.

Принимает значения:
1 – файл открывается для чтения. Записывать в него нельзя.
2 – файл открывается для записи.
8 – файл открывается для добавления данных

create – логическая величина, определяющая, будет ли создан новый файл, если файла с указанным именем не существует. true – файл создается.

format – кодировка для открытия файла.
Принимает значения:
- 2 – открывается, используя системную кодировку
- 1 – открывается в кодировке Unicode
0 – открывается в кодировке ASCII.

 

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\testfile.txt", 2, True)

 

Синтаксис:

File.OpenAsTextStream([iomode, [format]])

где

iomode – режим открытия файла.

Принимает значения:
1 – файл открывается для чтения. Записывать в него нельзя.
2 – файл открывается для записи.
3 – файл открывается для добавления данных

format – кодировка для открытия файла.

Принимает значения:
- 2 – открывается, используя системную кодировку
- 1 – открывается в кодировке Unicode
0 – открывается в кодировке ASCII.

Примечание. Перед использованием метода OpenAsTextStream объект File должен быть создан методом GetFile.

После открытия файла и всех изменений он должен быть закрыт методом Close.

Запись в файл

Запись информации в текстовый файл производится с помощью методом Write, WriteLine и WriteBlankLines.

Методы:

Write - записывает данные в файл в одну строку

WriteLine – записывает данные, с переходом на новую строку.

WriteBlankLines – записывает пустую строку.

Например:

 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.OpenTextFile("testfile.txt", 2, True)
'Открываем файл, если он не создан, создаем его

f.WriteLine "Файл создан VBScript!"
'записываем строку

f.WriteBlankLines(3)
'записываем 3 пустые строки

f.Write "Это снова я!"
'записываем строку

f.Close
'закрываем файл

 

Чтение из файла

Для чтения данных из файла используются методы Read, ReadLine, ReadAll, Skip и SkipLine.

Методы:

Read – читает из файла указанное количество символов.

ReadLine – читает строку из файла

ReadAll – считывает весь файл

Skip – пропускает указанное количество символов

SkipLine – пропускает строку

 

Set FSO = CreateObject("Scripting.FileSystemObject")
Set t_file = FSO.OpenTextFile("testfile.txt", 1)
'открываем файл для чтения

source = t_file.ReadAll
'читаем весь файл и передаем его переменной source

MsgBox source
'выводим содержание файла

t_file.Close
'закрываем файл

 

Работа с папками

Для работы с папками и их свойствами FSO предоставляет методы Copy, Move, CreateFolder, Delete, DateCreated, DateLastAccessed, DateLastModified, Size, FolderExists, которые работают аналогично файловым методам.

Свойство Описание
Attributes - позволяет просмотреть или установить атрибуты каталога.
DateCreated содержит дату и время создания каталога. Доступно только для чтения
DateLastAccessed содержит дату и время последнего обращения. Доступно только для чтения
DateLastModified содержит дату и время последнего изменения. Доступно только для чтения
Drive cодержит букву диска для устройства, на котором находится каталог. Доступно только для чтения
Files содержит коллекцию Files, содержащую все файлы в каталоге, включая системные и скрытые.
IsRootFolder возвращает True, если каталог является корневым, и False в противном случае.
Name позволяет просмотреть и изменить имя каталога. Доступно для чтения и записи
PaternFolder содержит объект Folderдля родительского каталога. Доступно только для чтения
Path содержит путь к каталогу
ShortName содержит короткое имя каталога (в формате 8.3)
ShortPath содержит путь к каталогу, состоящий из коротких имен каталогов (в формате 8.3)
Size возвращает размер всех файлов и подкаталогов, входящих в данный каталог, в байтах
Subfolders содержит коллекцию Folders, состоящую из всех подкаталогов каталога (включая подкаталоги с атрибутами «Скрытый» и «Системный»)
Type возвращает информацию о типе каталога

 

Например

Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FolderExists("Новая папка") Then
'если папка не существует
'создаем папку "Новая папка":
FSO.CreateFolder("Новая папка")
End If

Set f1 = FSO.GetFolder("Новая папка")
'получаем папку

Info = "Свойства папки: " + f1.Name + Chr(10) + Chr(10)

Info = Info & "Размер: " & f1.Size & Chr(10)
'получаем размер папки

Info = Info & "Создана: " & f1.DateCreated & Chr(10)
'время создания

Info = Info & "Изменена: " & f1.DateLastModified & Chr(10)
'время последнего изменения

MsgBox Info

 

При необходимости ввода информации о пути к каталогу WSH позволяет использовать не только стандартное окно диалога InputBox, но и стандартное окно Обзор.

Например:

On Error Resume Next

Set objShellApp = CreateObject("Shell.Application")

Set objFolder = objShellApp.BrowseForFolder(0, "Выбор папки", 0, "C:\")

MsgBox objFolder.Self.Path, vbInformation

If Err.Number <> 0 Then

MsgBox "Папка не выбрана!", vbInformation

End If

 

5 Работа с дисками

С помощью объекта Drive можно получить доступ к свойствам заданного локального или сетевого диска. Создается объект Drive с помощью метода GetDrive объекта FiieSystemObject следующим образом:

 

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set d = fso.GetDrive("C:")

Также объекты Drive могут быть получены как элементы коллекции Drives.

Свойства объекта Drive представлены в таблице, методов у этого объекта нет.

 

Свойство Описание
AvailableSpace Содержит количество доступного для пользователя места (в байтах) на диске
DriveLetter Содержит букву, ассоциированную с локальным устройством или сетевым ресурсом. Это свойство доступно только для чтения
DriveType Содержит числовое значение, определяющее тип устройства: 0 — неизвестное устройство; 1 — устройство со сменным носителем; 2 — жесткий диск; 3 — сетевой диск; 4 -CD-ROM;(CD-R и CD-RW не различаются) 5 — RAM-диск
FileSystem Содержит тип файловой системы, использующейся на диске (FAT, NTFS или CDFS)
FreeSpace Содержит количество свободного места (в байтах) на локальном диске или сетевом ресурсе. Доступно только для чтейия
IsReady Содержит true, если устройство готово, и false — в противном случае. Для устройств со сменными носителями и приво­дов CD-ROM, IsReady возвращает true только в том случае, когда в дисковод вставлен соответствующий носитель и устройство готово предоставить доступ к этому носителю  
Path Содержит путь к диску (например, С, но не С: \)  
RootFolder Содержит объект Folder, соответствующий корневому каталогу на диске. Доступно только для чтения  
SerialNumber Содержит десятичный серийный номер тома заданного диска  
ShareName Содержит сетевое имя для диска. Если объект не является сетевым диском, то в свойстве ShareName содержится пустая строка (" ")
TotalSize Содержит общий объем в байтах локального диска или сетевого ресурса  
VolumeName Содержит метку тома для диска. Доступно для чтения и записи  

 

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set d = fso.GetDrive("C:")

Text = " Информация о диске С:" + Chr(10)

Text = Text & "Объем диска С:" & d.TotalSize & Chr(10)

MsgBox Text, vbOKOnly + vbInformation

 

Доступная только для чтения коллекция Drives содержит объекты Drive для всех доступных дисков компьютера, в том числе для сетевых дисков и дисководов со сменными носителями.

В свойстве count коллекции Drives хранится число ее элементов, т. е. число доступных дисков.

 

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Получаем коллекцию Drives

Set oDrive = fso.Drives

Text = "Имеются диски " + Chr(10) + Chr(10)

For Each d In oDrive ' Все объекты Drive

Text = Text & d.DriveLetter & " " & d.VolumeName & Chr(10)

Next

MsgBox Text, vbOKOnly + vbInformation

MsgBox "Всего дисков " & oDrive.Count, vbOKOnly + vbInformation

 


 

№ варианта Задание
1. Необходимо скопировать на съемный диск, в указанную пользователем папку, папку с файлами, имя которой запрашивается у пользователя. Проверить наличие съемного диска, наличие на нем свободного места. Проверить наличие указанной папки-приемника, если ее нет - создать. Скопировать папку с файлами. Вывести список всех файлов в папке, их размер (в байтах, Кб или Мб) на экран. Продублировать информацию в файл протокола. После записи информации установить для файла протокола атрибут "только чтение".
Пользователь задает путь к папке. Проверить наличие заданного пути. Создать новую папку, установив для нее заданные пользователем атрибуты и скопировать в нее файлы из корневого каталога диска, заданного пользователем. Записать сведения о скопированных файлах в файл протокола.
Выводить вопрос, какую папку создать и на каком диске. Проверять, есть ли такой диск, папка должна быть корневой. В папке создать файл Inform.txt и записать в него информацию о заданном пользователем диске: тип файловой системы и количество доступного для пользователя места. Если такой файл уже имеется, дописывать в него информацию и присваивать ему атрибут «Скрытый».
Проверять, были ли обращения к заданной папке со времени, введенного пользователем. Вывести список и общий размер файлов с атрибутом "Только для чтения", имеющихся в папке. Заархивировать эти файлы. Создать файл и записать в него информацию о заданном пользователем диске: метку диска, серийный номер и общий размер (Кб, Мб или Гб).
Пользователь задает путь к папке (возможно сетевой). Проверить существует ли указанный диск и папка. Если со дня создания папки к ней не было обращений больше месяца, предложить удалить ее целиком или файлы, находящиеся в ней (по одному), выводя размер и дату создания каждого файла. Если в папке есть файлы с расширением.txt, выводить их первые 3 строки.
Определить, изменялась ли папка за последнюю неделю. Если нет, скопировать в нее файлы с дискеты, CD или съемного диска. Проверить наличие дискеты (CD), вывести список имеющихся на ней файлов и удостовериться, что на рабочем диске достаточно места. Создать файл, записав туда тип диска, с которого выполнялось копирование и его метку. Файлу присвоить атрибут «Скрытый».
Пользователь задает путь к папке (возможно сетевой). Проверить ее наличие. Вывести количество и объем файлов, входящих в папку, кроме системных и скрытых. Продублировать эту информацию в файл на выбранном пользователем сетевом диске (если он доступен) в файл “Info.txt”.
Вывести каталоги съемного диска, полные пути и короткие пути которых одинаковы. Проверять наличие диска, наличия на нем папок и файлов. Создать файл «протокол. txt» и записать в него информацию о диске С: - общий размер, занятое пространство, свободное пространство, тип файловой системы. Установить на этот файл атрибут «Только чтение».
Определить размер файлов, входящих в указанную пользователем папку. Если в ней есть вложенные папки, их размер не учитывать. Размер выводить в соответствующих единицах (байтах, Кб или Мб). Эту информацию вывести на экран и продублировать в файл, который записать в корневой каталог заданного пользователем диска.
Написать сценарий, который будет осуществлять поиск файла, заданного пользователем, в каталогах на заданном пользователем диске. Проверить наличие указанного диска. Вести протокол поиска, записывая, в каких каталогах обнаружен файл. Файл протокола сделать скрытым. Если искомый файл обнаружен хотя бы раз, вывести сообщение на экран.
Написать сценарий, который будет осуществлять копирование файлов из заданного пользователем каталога на съемном диске в указанную пользователем папку. Проверить наличие диска, файлов на нем и наличие указанной папки. Если в указанной папке уже есть такие файлы, копировать только более новые файлы. Создать файл протокола, записав дату копирования и информацию о том, сколько файлов было скопировано и их общий объем.
Написать сценарий, который будет создавать отчет об использовании дискового пространства на всех доступных дисках. В файл отчета записывать дату проверки, букву диска, метку тома, общий объем, количество свободного и занятого пространства в Мб. Вывести сообщение, если в корневом каталоге диска обнаружены каталоги, размер которых превышает заданную величину, например 500 Мб.


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: