
- •Загальні вказівки до виконання лабораторних робіт
- •Лабораторна робота № 1-3 програмування в windows script host
- •1 Основні теоретичні відомості
- •Виконання основних операцій з файловою системою
- •2 Порядок виконання роботи
- •3 Контрольні запитання
- •Лабораторна робота № 4 основи роботи з операційною системою unix
- •1 Основні теоретичні відомості
- •2 Порядок виконання роботи
- •3 Контрольні питання
- •Лабораторна робота № 5 керування процесами
- •1 Основні теоретичні відомості
- •2 Порядок виконання роботи
- •3 Контрольні запитання
- •Лабораторна робота № 6 права доступу в операційній системі unix
- •1 Основні теоретичні відомості
- •2 Порядок виконання роботи
- •3 Контрольні питання
- •Лабораторна робота № 7 взаємодія процесів в ос unix за допомогою іменованих каналів
- •1 Основні теоретичні відомості
- •2 Порядок виконання роботи
- •3 Контрольні запитання
- •Перелік рекомендованих джерел
2 Порядок виконання роботи
Відповідно до номера студента за списком в журналі викладача розробити скрипт (сценарій) (див. таблицю 2.1). У коментарях описати застосування програми і повідомити інформацію про автора. Поточний каталог не змінювати, якщо це спеціально не обумовлено. Якщо проводиться копіювання з одного місця в інше, параметри джерела і призначення передавати в командному рядку.
У лабораторній роботі № 1 необхідно:
1) вивести дані про автора і завдання (WScript.echo);
var s; //Оголошення змінної
// Формування рядка
s="Лабораторна робота N 2\n"+
"Робота з файловою системою WSH\n"+
"Виконав ст-т гр. КСМ-_-_\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();
У роботі № 2 необхідно:
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 ("Натиснута кнопка Відміна");
У роботі № 3 необхідно:
1) Записати інформацію про всі файли (каталога) в таблицю Ms Word або Excel, що складається з 4 колонок, – порядковий номер, ім'я файлу, розширення (дата, розмір і тому подібне – залежно від завдання в 2-й роботі), виконану дію. Після заповнення таблиці повинне бути проведена сортування по 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.
Таблиця 2.1 – Завдання до лабораторних робіт № 1 - 3
№ |
Завдання № 1 |
Завдання № 2 |
Завдання №3 |
1 |
Створення списку студентських каталогів |
Поля введення шифру групи і кількості студентів |
Word |
2 |
Видалення файлів з певним атрибутом |
Поля введення атрибутів |
Excel |
3 |
Видалення файлів певного розміру |
Поле введення розміру |
Word |
4 |
Видалення файлів певного розширення |
Поле введення розширення |
Excel |
5 |
Видалення файлів певної дати модифікації |
Поле введення дати |
Word |
6 |
Видалення каталогів певного розміру |
Поле введення максимального розміру |
Excel |
7 |
Видалення каталогів залежно від часу модифікації |
Поле введення дати і часу |
Word |
8 |
Копіювання файлів з певним атрибутом |
Поле введення атрибутів |
Excel |
9 |
Копіювання файлів з певним розширенням |
Поле введення розширення |
Word |
10 |
Копіювання файлів з певним розміром |
Поле введення мінімального розміру |
Excel |
11 |
Копіювання файлів з певним часом модифікації |
Поле введення дати і часу |
Word |
12 |
Установка атрибутів файлів |
Поле введення атрибутів |
Excel |
13 |
Перейменування файлів з певним розширенням
|
Поля введення розширень |
Word |
14 |
Перейменування файлів у верхній або нижній регістр |
Поля введення регістра |
Excel |
15 |
Пошук файлів, що має задану дату створення (модифікації) |
Поле введення дати |
Word |
16 |
Знайти на диску N останніх файлів і помістити їх в новий каталог |
Поля введення диска і числа файлів N |
Excel |
17 |
Знайти на диску файли нульового розміру і видалити їх |
Поле вибору диска |
Word |
18 |
Знайти на диску файли за останній день, тиждень, місяць і помістити їх в новий каталог |
Поле введення діапазону дат |
Excel |
19 |
Знайти на диску файли максимального і мінімального розміру, підрахунок середнього розміру |
Поле вибору диска |
Word |
20 |
Визначити розмір невживаного дискового простору (вільне місце на диску мінус сумарний об'єм всіх файлів) |
Поле вибору диска |
Excel |
21 |
Оновлення програмних файлів залежно від номера версії (GetFileVersion) |
Поля вибору каталогів |
Word |
22 |
Додавання інформації в текстові файли |
Поля вибору файлів |
Excel |
23 |
Звіт про використання дискового простору
|
Поле вибору диска |
Word |
24 |
Отримання і установка змінних середовища |
Поля введення змінних середовища |
Excel |
25 |
Пошук файлів по масці в імені файлу |
Поле введення маски |
Word |
26 |
Підрахувати загальний розмір файлів з певними розширеннями (doc, mp3, avi і ін.) в даному каталозі і його підкаталогах |
Поле введення розширень |
Excel |
27 |
Створення списку студентських каталогів |
Поля введення шифру групи і кількості студентів |
Word |
28 |
Видалення файлів з певним атрибутом |
Поля введення атрибутів |
Excel |
29 |
Видалення файлів певного розміру |
Поле введення розміру |
Word |
30 |
Видалення файлів певного розширення |
Поле введення розширення |
Excel |
У завданнях з дисками передбачається повний перебір всіх файлів.