Андрей Попов - Windows Script Host для Windows 2000/XP
Сами названия методов объекта 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.
Листинг 5.1. Создание текстового файла и запись в него строки/*******************************************************************/
/* РРјСЏ: CreateFile.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                  */
/* Описание: Создание текстового файла и запись в него строки     */
/*******************************************************************/
var FSO,f; //Объявляем переменные
//Создаем объект FileSystemObject
FSO = WScript.CreateObject("Scripting.FileSystemObject");
//Создаем на диске C: текстовый файл TestFile.txt
f = FSO.CreateTextFile("C:\TestFile.txt", true);
//Записываем строку в файл
f.WriteLine("Привет!");
//Закрываем файл
f.Close();
/************* Конец *********************************************/
Методы DeleteFile и DeleteFolder
Параметры filespec или folderspec, используемые в методах, могут содержать групповые символы "?" и "*" в последнем компоненте пути для удаления сразу нескольких файлов/каталогов.
Если параметр force равен false или не указан вовсе, то с помощью методов DeleteFile или DeleteFolder будет нельзя удалить файл/каталог с атрибутом "только для чтения" (read-only). Установка для force значения true позволит сразу удалять такие файлы/каталоги.
ЗамечаниеПри использовании метода DeleteFolder неважно, является ли удаляемый каталог пустым или нет — он удалится в любом случае
Если заданный для удаления файл/каталог не будет найден, то возникнет ошибка.
Метод DriveExists
Для дисководов со съемными носителями метод DriveExists вернет true даже в том случае, если носитель физически отсутствует. Для того чтобы определить готовность дисковода, нужно использовать свойство IsReady соответствующего объекта Drive.
В качестве примера использования метода DriveExists приведем функцию ReportDriveStatus, которая возвращает информацию о наличии диска, передаваемого в эту функцию в качестве параметра (листинг 5.2).
Листинг 5.2. Функция ReportDriveStatusfunction ReportDriveStatus(drv) {
 var FSO, s ="" //Объявляем переменные
 //Создаем объект FileSystemObject
В FSO = WScript.CreateObject("Scripting.FileSystemObject");
 //Проверяем наличие диска drv
 if (FSO.DriveExists(drv)) s += "Диск " + drv + " существует.";
 else s += "Диск " + drv + " не существует.";
В return(s);
}
Функция ReportDriveStatus будет возвращать информацию о наличии диска, передаваемого в эту функцию в качестве параметра.
Метод GetAbsolutePathName
Для иллюстрации работы этого метода предположим, что текущим каталогом является C:MyDocumentsReports. В табл. 5.3 приведены значения, возвращаемые методом GetAbsolutePathName, при различных значениях параметра pathspec.
Таблица 5.3. Варианты работы метода GetAbsolutePathName
Параметр pathspec Возвращаемое значение "РЎ:" "РЎ:MyDocumentsReports" "РЎ:.." "РЎ:MyDocuments" "РЎ:\" "РЎ:" "Region1" "РЎ:MyDocumentsReportsRegion1" "РЎ:\..\..\MyDocuments" "РЎ:РњСѓDocuments"ВМетод GetBaseName