Чтение онлайн

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Выполнение основных операций с файловой системой

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

FileSystemObject
. С помощью методов объекта
FileSystemObject
можно выполнять следующие основные действия:

копировать или перемещать файлы и каталоги;

удалять файлы и каталоги;

создавать каталоги;

создавать или открывать текстовые файлы;

создавать объекты

Drive
,
Folder
и
File
для доступа к конкретному диску, каталогу или файлу соответственно.

С помощью свойств объектов

Drive
,
Folder
и
File
можно получить детальную информацию о тех элементах файловой системы, с которыми они ассоциированы. Объекты
Folder
и
File
также предоставляют методы для манипулирования файлами и каталогами (создание, удаление, копирование, перемещение); эти методы в основном копируют соответствующие методы объекта
FileSystemObject
.

Кроме этого, имеются три объекта-коллекции:

Drives
,
Folders
и
Files
. Коллекция
Drives
содержит объекты
Drive
для всех имеющихся в системе дисков,
Folders
— объекты
Folder
для всех подкаталогов заданного каталога,
Files
— объекты
File
для всех файлов, находящихся внутри определенного каталога.

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

Методы для этого предоставляет объект
TextStream
.

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

Таблица 5.1. Выполнение основных файловых операций

Операция Используемые объекты, свойства и методы
Получение сведений об определенном диске (тип файловой системы, метка тома, общий объем и количество свободного места и т.д.) Свойства объекта
Drive
. Сам объект
Drive
создается с помощью метода
GetDrive
объекта
FileSystemObject
Получение сведений о заданном каталоге или файле (дата создания или последнего доступа, размер, атрибуты и т.д.) Свойства объектов
Folder
и
File
. Сами эти объекты создаются с помощью методов
GetFolder
и
GetFile
объекта
FileSystemObject
Проверка существования определенного диска, каталога или файла Методы
DriveExists
,
FolderExists
и
FileExists
объекта
FileSystemObject
Копирование файлов и каталогов Методы
CopyFile
и
CopyFolder
объекта
FileSystemObject
, а также методы
File.Сору
и
Folder.Сору
Перемещение файлов и каталогов Методы
MoveFile
и
MoveFolder
объекта
FileSystemObject
или методы
File.Move
и
Folder.Move
Удаление файлов и каталогов Методы
DeleteFile
и
DeleteFolder
объекта
FileSystemObject
или методы
File.Delete
и
Folder.Delete
Создание каталога Методы
FileSystemObject.CreateFolder
или
Folders.Add
Создание текстового файла Методы
FileSystemObject.CreateTextFile
или
Folder.CreateTextFile
Получение списка всех доступных дисков Коллекция
Drives
, содержащаяся в свойстве
FileSystemObject.Drives
Получение списка всех подкаталогов заданного каталога Коллекция
Folders
, содержащаяся в свойстве
Folder.SubFolders
Получение списка всех файлов заданного каталога Коллекция
Files
, содержащаяся в свойстве
Folder.Files
Открытие текстового файла для чтения, записи или добавления Методы
FileSystemObject.CreateTextFile
или
File.OpenAsTextStream
Чтение информации из заданного текстового файла или запись ее в него Методы объекта
TextStream

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

Объект FileSystemObject

Объект

FileSystemObject
является основным объектом, обеспечивающим доступ к файловой системе компьютера; его методы используются для создания остальных объектов (
Drives
,
Drive
,
Folders
,
Folder
,
Files
,
File
и
TextStream
).

Для создания внутри сценария экземпляра объекта

FileSystemObject
можно воспользоваться методом
CreateObject
объекта
WScript
:

var FSO = WScript.CreateObject("Scripting.FileSystemObject");

Также можно использовать объект

ActiveXObject
языка JScript (с помощью этого объекта можно работать с файловой системой из сценариев, находящихся внутри HTML-страниц):

var FSO = new ActiveXObject("Scripting.FileSystemObject");

Объект

FileSystemObject
имеет единственное свойство
Drives
, в котором хранится коллекция, содержащая объекты
Drive
для всех доступных дисков компьютера. Примеры, иллюстрирующие использование свойства
Drives
приведены ниже в разд. "Коллекция Drives".

Методы объекта

FileSystemObject
представлены в табл. 5.2.

Таблица 5.2. Методы объекта FileSystemObject

Метод Описание
BuildPath(path, name)
Добавляет к заданному пути (параметр
path
) новое имя (параметр
name
)
CopyFile(source, destination [, overwrite])
Копирует один или несколько файлов из одного места (параметр
source
) в другое (параметр
destination
)
CopyFolder(source, destination [, overwrite])
Копирует каталог со всеми подкаталогами из одного места (параметр
source
) в другое (параметр
destination
)
CreateFolder(foldername)
Создает новый каталог с именем
foldername
. Если каталог
foldername
уже существует, то произойдет ошибка
CreateTextFile(filename [/overwrite[, unicode]])
Создает новый текстовый файл с именем
filename
и возвращает указывающий на этот файл объект
TextStream
DeleteFile(filespec [, force])
Удаляет файл, путь к которому задан параметром
filespec
DeleteFolder(folderspec [, force])
Удаляет каталог, путь к которому задан параметром
folderspec
, вместе со всем его содержимым
DriveExists(drivespec)
Возвращает
True
,
если заданное параметром
drivespec
устройство существует и
False
в противном случае
FileExists(filespec)
Возвращает
True
, если заданный параметром
filespec
файл существует и
False
в противном случае
FolderExists(folderspec)
Возвращает
True
, если заданный параметром
folderspec
каталог существует и
False
в противном случае
GetAbsolutePathName(pathspec)
Возвращает полный путь для заданного относительного пути
pathspec
(из текущего каталога)
GetBaseName(path)
Возвращает базовое имя (без расширения) для последнего компонента в пути
path
GetDrive(drivespec)
Возвращает объект
Drive
, соответствующий диску, заданному параметром
drivespec
GetDriveName(path)
Возвращает строку, содержащую имя диска в заданном пути. Если из параметра
path
нельзя выделить имя диска, то метод возвращает пустую строку (" ")
GetExtensionName(path)
Возвращает строку, содержащую расширение для последнего компонента в пути
path
. Если из параметра
path
нельзя выделить компоненты пути, то
GetExtensionName
возвращает пустую строку (""). Для сетевых дисков корневой каталог (\) рассматривается как компонент пути
GetFile(filespec)
Возвращает объект
File
, соответствующий файлу, заданному параметром
filespec
.
Если файл, путь к которому задан параметром
filespec
,
не существует, то при выполнении метода
GetFile
возникнет ошибка
GetFileName(pathspec)
Возвращает имя файла, заданного полным путем к нему. Если из параметра
pathspec
нельзя выделить имя файла, метод
GetFileName
возвращает пустую строку ("")
GetFolder(folderpec)
Возвращает объект
Folder
, соответствующий каталогу, заданному параметром
folderspec
.
Если каталог, путь к которому задан параметром
folderspec
, не существует, при выполнении метода
GetFolder
возникнет ошибка
GetParentFolderName(path)
Возвращает строку, содержащую имя родительского каталога для последнего компонента в заданном пути. Если для последнего компонента в пути, заданном параметром
path
,
нельзя определить родительский каталог, то метод возвращает пустую строку ("")
GetSpecialFolder(folderpec)
Возвращает объект
Folder
для некоторых специальных папок Windows, заданных числовым параметром
folderspec
GetTempName
Возвращает случайным образом сгенерированное имя файла или каталога, которое может быть использовано для операций, требующих наличия временного файла или каталога
MoveFile(source, destination)
Перемещает один или несколько файлов из одного места (параметр
source
) в другое (параметр
destination
)
MoveFolder(source, destination)
Перемещает один или несколько каталогов из одного места (параметр
source
) в другое (параметр
destination
)
OpenTextFile(filename[, iomode[, create[, format]]])
Открывает заданный текстовый файл и возвращает объект
TextStream
для работы с этим файлом

Сами названия методов объекта

FileSystemObject
довольно прозрачно указывают на выполняемые ими действия. Приведем необходимые пояснения и примеры для перечисленных методов.

Методы CopyFile и CopyFolder

Для копирования нескольких файлов или каталогов в последнем компоненте параметра

source
можно указывать групповые символы "?" и "*"; в параметре
destination
групповые символы недопустимы. Например, следующий пример является корректным кодом:

FSO = WScript.CreateObject("Scripting.FileSystemObject");

FSO.CopyFile("с:\\mydocuments\\letters\\*.doc", "с:\\tempfolder\\");

А так писать нельзя:

FSO = WScript.CreateObject("Scripting.FileSystemObject");

FSO.CopyFile("с:\\mydocuments\\*\\R1???97.xls", "с:\\tempfolder");

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

overwrite
является логической переменной, определяющей, следует ли заменять уже существующий файл/каталог с именем
destination
(
overwrite=true
) или нет (
overwrite=false
).

При использовании методов

CopyFile
и
CopyFolder
процесс копирования прерывается после первой возникшей ошибки (как и в команде
COPY
операционной системы).

Метод CreateTextFile

Параметр

overwrite
, используемый в методе, имеет значение в том случае, когда создаваемый файл уже существует. Если
overwrite
равно
true
, то такой файл перепишется (старое содержимое будет утеряно), если же в качестве
overwrite
указано
false
, то файл переписываться не будет. Если этот параметр вообще не указан, то существующий файл также не будет переписан.

Параметр

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

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

TextStream
. Соответствующий пример сценария приведен в листинге 5.1.

Поделиться с друзьями: