Андрей Попов - Windows Script Host для Windows 2000/XP
Методы объекта TextStream представлены в табл. 5.13.
Таблица 5.13. Методы объекта TextStream
Метод Описание Close() Закрывает открытый файл Read(n) Считывает из файла n символов и возвращает полученную строку ReadAll() Считывает полностью весь файл и возвращает полученную строку ReadLine() Возвращает полностью считанную из файла строку Skip(n) Пропускает при чтении n символов SkipLine() Пропускает целую строку при чтении Write(string) Записывает в файл строку string (без символа конца строки) WriteBlankLines(n) Записывает в файл n пустых строк (символы перевода строки и возврата каретки) WriteLine([string]) Записывает в файл строку string (вместе с символом конца строки). Если параметр string опущен, то в файл записывается пустая строкаВ листинге 5.15 приведен сценарий TextFile.js, иллюстрирующий использование методов объекта TextStream. В этом сценарии на диске С: создается файл TestFile.txt и в него записываются три строки, вторая из которых является пустой. После этого файл открывается для чтения и из него считывается третья строка, которая выводится на экран (рис. 5.7).
Рис. 5.7. Результат работы сценария TextFile.js
Листинг 5.15. Работа с текстовым файлом с помощью методов объекта TextStream/*******************************************************************/
/* РРјСЏ: TextFile.jsВ В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В В */
/* Язык: JScript                                                  */
/* Описание: Работа с текстовым файлом (запись и чтение информации)*/
/*******************************************************************/
var FSO,F,s; //Объявляем переменные
var ForReading = 1; //Рнициализируем константы
//Создаем объект FileSystemObject
FSO=WScript.CreateObject("Scripting.FileSystemObject");
//Создаем на диске C: текстовый файл TestFile.txt
F=FSO.CreateTextFile("C:\TestFile.txt", true);
//Записываем в файл первую строку
F.Write("Рто ");
F.WriteLine("первая строка");
//Записываем в файл пустую строку
F.WriteBlankLines(1);
//Записываем в файл третью строку
F.WriteLine("Рто третья строка");
//Закрываем файл
F.Close();
//Открываем файл для чтения
F=FSO.OpenTextFile("C:\TestFile.txt", ForReading);
//Пропускаем в файле две первые строки
F.SkipLine();
F.SkipLine();
s="Третья строка из файла C:\TestFile.txt:n";
//Считываем из файла третью строку
s+=F.ReadLine();
//Выводим информацию на экран
WScript.Echo(s);
/************* Конец *********************************************/
Примеры сценариевВ
Ниже подробно рассмотрены несколько завершенных сценариев, иллюстрирующих работу с файловой системой компьютера.
Отчет об использовании дискового пространства
Напишем сценарий DrivesReport.js, который будет создавать таблицу использования дискового пространства для дисков всех типов (съемных, жестких и сетевых), имеющихся на компьютере, в следующем формате:
Диск: Р±СѓРєРІР°_диска Метка тома: метка Общий объем, Mb: n1В Рспользуется, Mb: n2В РЎРІРѕР±РѕРґРЅРѕ, Mb: n3ВДля этого РІ сценарии вывод информации производится РІ текстовый файл rep.txt (переменная RepFile), который затем открывается СЃ помощью Блокнота (СЂРёСЃ. 5.8):
//Создаем объект WshShell
WshShell=WScript.CreateObject("WScript.Shell");
//Запускаем Блокнот (notepad.exe) и открываем в нем файл rep.txt
WshShell.Run("notepad.exe rep.txt");В
Данные об одном диске формируются в функции WriteDriveInfo(drive), где в качестве параметра drive подставляется объект Drive для нужного диска. Соответствующие объекты Drive для всех дисков, имеющихся в системе, создаются в функции LoopDrives():
// Функция для перебора в цикле всех устройств (дисков)
function LoopDrives() {
В var Drives;
 //Создаем коллекцию дисков
В Drives = new Enumerator( FSO.Drives );
 //Цикл по всем дискам
В for(; !Drives.atEnd(); Drives.moveNext()) WriteDriveInfo(Drives.item());
}
Рис. 5.8. Сформированный отчет об использовании дискового пространства
В функции WriteDriveInfo(drive) сначала проверяется готовность устройства drive — если свойство IsReady объекта Drive равно true, то для этого устройства определяются общий объем (свойство TotalSize), объем свободного пространства (свойство FreeSpace), буква диска (свойство DriveLetter) и метка тома (свойство FreeSpace):
//Вычисляем общий объем диска в мегабайтах
Total = Math.round(drive.TotalSize/1048576);
//Вычисляем объем свободного пространства в мегабайтах