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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Для работы с файловой системой из сценариев WSH предназначены восемь объектов, главным из которых является FileSystemObject. С помощью этого объекта можно выполнить следующие основные действия:

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

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

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

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

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

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

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

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

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

Задания

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

В лабораторной работе № 3 необходимо:

1) вывести данные об авторе и задании (WScript.echo);

var s; //Объявление переменной

// Формирование строки

s="Лабораторная работа N 3\n"+

"Работа с файловой системой WSH\n"+

"Выполнил ст-т гр. XX-XX\n";

WScript.Echo (s); // Печать строки

 

2) необходимые параметры передавать через командную строку (WScript.Arguments);

Пример на занесение параметров командной строки в массив args:

var i, n, objArgs, s, args; // Объявляем переменные

objArgs = WScript.Arguments;//Создаем объект WshArguments

// Определяем общее количество аргументов

n = objArgs.Count();

s = "Всего аргументов: "+n+"\n";

args = new Array(n);

// цикл по коллекции аргументов

for (i=0; i <= n-1; i++) {

s += objArgs(i)+"\n"; // Формируем строки с аргументами

args[i] = objArgs(i); // Записываем в массив

}

WScript.Echo(s); // Выводим сформированные строки

 

3) выполнить файловую операцию по вариантам (FileSystemObject);

Пример на поиск в текущем каталоге файла наибольшего размера:

var FSO, Path, Fold, F, i=0, CurSize, MaxSize=0, MaxF, s;

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

// получаем доступ к текущему каталогу

Path = FSO.GetParentFolderName(WScript.ScriptFullName);

Fold = FSO.GetFolder(Path);

// Создаем коллекцию файлов

F = new Enumerator(Fold.Files);

// Цикл по всем файлам

while (! F.atEnd()) {

CurSize = F.item().Size; // размер текущего файла

// сравниваем размер

if (CurSize > MaxSize) {

MaxSize = CurSize; // новый максимум

MaxF = F.item(); // файл наибольшего размера

}

// Переходим к следующему файлу

F.moveNext();

i++; // кол-во просмотренных файлов

} // while

s = "В текущем каталоге "+ Fold.Name + " "+i+" файлов.\n"+

"Максимальный размер имеет "+MaxF.Name+" = "+

Math.round(MaxSize/1024) + " Кб";

WScript.echo(s);

 

Пример на вывод дат создания (изменения, последнего обращения) и атрибутов файла, указанного в командной строке:

 

var file = "C:\\Autoexec.bat"; // файл автозагрузки

// извлекам параметры командной строки - там имя файла

var objArgs = WScript.Arguments; // коллекция аргументов

if (objArgs.length > 0) // кол-во аргументов > 0

file = objArgs(0); // получаем первый аргумент

// Создание FileSystemObject для доступа к файловой системе

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

// проверка существования файла

if (! FSO.FileExists(file))

{

WScript.Echo("Ошибка:", file, " не существует");

WScript.Quit(1);

}

var F = FSO.GetFile(file); // извлекаем в объект файл

// Теперь извлекаем информацию о файле

var s = "Файл: \t\t" + F.Name + "\n"; // имя файла

// даты создания, изменения, последнего обращения

var D1 = new Date(F.DateCreated); // создаем объект дата

// конвертируем в удобоваримый формат

s += "Создан: \t\t" + D1.toLocaleDateString() + "\n";

var D2=new Date(F.DateLastModified);//создаем объект дата

s += "Изменен: \t" + D2.toLocaleDateString() + "\n";

var D3=new Date(F.DateLastAccessed);//создаем объект дата

s += "Обращение: \t" + D3.toLocaleDateString() + "\n";

// расшифровка атрибутов

s += "Атрибуты: \t";

var attrib = F.Attributes;

if ((attrib & 0x01)!= 0) // Read-only

s += "R ";

if ((attrib & 0x02)!= 0) // Hidden

s += "H ";

if ((attrib & 0x04)!= 0) // System

s += "S ";

if ((attrib & 0x20)!= 0) // Archive

s += "A ";

if ((attrib & 0x800)!= 0) // Compressed (Windows NT)

s += "C ";

WScript.Echo(s); // вывод на экран

 

4) записать протокол выполненных дествий во внешний log-файл (объект TextStream).

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

// Создаем текстовый файл

var F = FSO.CreateTextFile("log.txt", true);

// Записываем строку в файл

var D = new Date();

F.WriteLine("Протокол работы от:"+D.toLocaleDateString());

// Закрываем файл

F.Close();

 

В работе № 4 необходимо:

1) предусмотреть поле ввода необходимых данных по вариантам (вызов функции InputBox языка VBScript в Jscript возможен при создании сценария WSF с XML-разметкой);

<job id="InputBox">

<script language="VBScript">

Function InputName ' Описываем функцию на языке VBScript

' Вводим имя в диалоговом окне

InputName = InputBox("Введите Ваше имя:",

"Окно ввода VBScript")

End Function

</script>

<script language="JScript">

var s;

s = InputName(); // Вызываем функцию InputName

// Выводим значение переменной s на экран

WScript.Echo("Здравствуйте, "+s+"!");

</script>

</job>

2) произвести контроль вводимых данных (на соответствие датам, строкам, числам и пр.);

var args = WScript.Arguments; // коллекция аргументов

var n = args.Count();

// проверка на кол-во аргументов

if (n==0) {

WScript.echo("Задайте аргумент в командной строке!");

WScript.Quit(); // выход из сценария

}

var s = args(0);

if (isNaN(s))

{

WScript.echo("Аргумент - Not A Number!");

WScript.Quit(); // выход из сценария

}

m = parseInt(s);

if (! isFinite(m))

{

WScript.echo("Аргумент не является числом!");

WScript.Quit(); // выход из сценария

}

WScript.echo("Вы ввели число "+m);

3) создать диалог для подтверждения операций (MsgBox или Popup).

var WshShell, Res, Text, Title; // Объявление переменных

// Инициализация констант для диалоговых окон

var vbOkCancel=1, vbOk=1;

// Создание объекта WshShell

WshShell = WScript.CreateObject("WScript.Shell");

Text = "Вы действительно хотите удалить файлы?";

Title = "Сообщение";

// Вывод диалогового окна на экран

Res=WshShell.Popup(Text,0, Title, vbOkCancel);

// Определение, какая из кнопок была нажата в диалоговом окне

if (Res==vbOk)

WshShell.Popup ("Нажата кнопка ОК");

else

WshShell.Popup ("Нажата кнопка Отмена");

 

В работе № 5 необходимо:

Записать информацию о всех файлах (каталога) в таблицу MS Word или Excel, состоящую из 4 колонок – порядковый номер, имя файла, расширение (дата, размер и т.п. – в зависимости от задания в 3-ей работе), выполненное действие. После заполнения таблицы должна быть произведена сортировка по 3-ей колонке. В следующем примере в таблицу MS Word заносятся все подкаталоги текущего каталога, затем производится сортировка по их размеру:

var WA, // экземпляр объекта Application

WD; // экземпляр объекта Document

var n, WshShell, F, Fold, fname, fsize, i1,Cur, put;

i1= 0; // кол-во подкаталогов

// создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

// создаем объект FileSystemObject

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

F = FSO.GetFolder(WshShell.CurrentDirectory);

Fold = new Enumerator(F.SubFolders);

n= F.SubFolders.Count;

WScript.Echo("Количество каталогов "+n);

fname= new Array(n);

fsize= new Array(n);

put= F.Path;

for (;!Fold.atEnd();Fold.moveNext()) {

// извлекаем текущий элемента коллекции

Cur=Fold.item();

fname[i1]=Cur.Name;

fsize[i1]= parseInt(Cur.Size/1024);

i1++ }

var wdCell=12,wdAlignParagraphLeft=0,wdAlignParagraphCenter=1,

wdWindowStateMaximize=1;

// создаем объект Application

WA=WScript.CreateObject("Word.Application");

WD=WA.Documents.Add();// создаем новый документ

WA.Visible=true; // делаем окно Winword видимым

WA.WindowState=wdWindowStateMaximize; // Максимизируем окно var count,text1,text2;

WA.Selection.TypeText(" В директории "+put+ " существуют следующие каталоги: ");

WA.Selection.TypeText("*************************************");

WA.ActiveDocument.Tables.Add(WA.Selection.Range,3,2,1,1);

WA.Selection.Font.Color = 255;

WA.Selection.TypeText("Каталог");

WA.Selection.MoveRight(wdCell);

WA.Selection.Font.Color = 255;

WA.Selection.TypeText("Размер в Кб");

WA.Selection.MoveRight(wdCell);

count= 0;

while (count!= n) {

text1=fname[count];

text2=fsize[count]+"";

WA.Selection.TypeText(text1);

WA.Selection.MoveRight(wdCell);

WA.Selection.TypeText(text2);

WA.Selection.MoveRight(wdCell);

count++;

WScript.Sleep(100);

}

WA.Selection.Sort(0,"столбцам 2",1,0,"",0,0,"",0,0,0,1,0);

 

Третья, четвертая и пятая работа должны находится в одном исходном файле. Программа будет обрабатывать аргументы командной строки, либо, при их отсутствии, предлагать диалог ввода. Протокол работы ведется как в текстовом файле, так и во внешнем приложении – MS Word или Excel.

Библиографический список

1. Финогенов MS-DOS: Самоучитель по системным функциям, Горячая линия-телеком, 2001. - 382 с.

2. Панкратов Операционная система MS-DOS 6.22: Справочное пособие, Познавательная книга плюс, 2001. - 224 с.

3. Губин А. Работа в MS-DOS для всех: Практическое пособие, Радио и связь, 1993. - 160 с.

4. Франкен Г., Молявко С. MS-DOS 6.2 для пользователя. Киев: BHV, 1994; Москва: БИНОМ, 1994.

5. Фигурнов В. IBM PC для пользователя. – Уфа: НПО “Информатика и Компьютеры”, 1993.

6. Руководство по программированию под управлением MS DOS: Пер.с фр./Пьеро Ф., Люкзак Ж.-Л., Рейко Ф.; Под ред. Пьеро Ф. - М.: Радио и связь, 1995. – 544 с.

7. Попов А. В. Командные файлы и сценарии Windows Script Host, BHV-СПб, 2003. - 320 с.

8. Торрес Дж. Скрипты для администратора Windows. Специальный справочник. - Питер: 2002: - 336 с.

10. Борн Г. Руководство разработчика на Microsoft Windows Script Host 2.0. Мастер-класс (+CD)/ Пер. с англ. – СПб.: Издательско-торговый дом «Русская Редакция», 2001. – 480 стр.: ил.

11. Экк Сценарии ADSI для системного администрирования Windows NT/2000, Вильямс, 2000. - 576 с.

 

 

Приложение 1



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.124.40 (0.048 с.)