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

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

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

Шрифт:

}

Основной функцией, осуществляющей архивирование файлов, является

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

if (!CheckPath) return false;

Затем создаются экземпляры объектов

FileSystemObject
и
WshShell
:

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

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

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

WshShell = new ActiveXObject("WScript.Shell");

Имя файла-архива формируется следующим образом:

//Формируем имя файла-архива

SFName=SPref+NowIs+".arj";

Архиватор arj.exe мы будем запускать в отдельном командном окне, которое закроется после выполнения этой программы. Для этого мы сформируем командную строку

SComLine
, с помощью которой запускается вторичная копия командного процессора (путь к командному процессору хранится в переменной среды
%COMSPEC%
, вторичная копия вызывается с помощью ключа
):

SComLine="%COMSPEC% /с ";

Синтаксис запуска arj.exe для создания архивного файла имеет следующий вид:

arj.exe a Archiv Files

где

Archiv
— путь к файлу-архиву,
Files
— имена добавляемых в архив файлов (здесь можно использовать шаблонные символы ? и *). Поэтому мы добавим нужные компоненты к командной строке
SComLine
:

SComLine+=" arj.exe a "+FSO.BuildPath(SArch, SFName) + " ";

SComLine+= FSO.BuildPath(SFrom, SMask);

Команды, записанные в

SComLine
, запускаются с помощью метода
Run
объекта
WshShell
; код возврата сохраняется в переменной
RetCode
:

RetCode = WshShell.Run(SComLine, 1, true);

Равенство нулю переменной

RetCode
означает, что архивирование выполнено без ошибок — в этом случае функция
FilesToArchiv
возвращает
true
. Если же при выполнении arj.exe возникла ошибка (переменная
RetCode
не равна нулю), то ее код вносится в сообщение об ошибке (свойство
SErrMess
):

//Анализируем код возврата для arj.exe

if (0==RetCode)

 //Выполнение arj.exe завершилось без ошибок

 return true;

else {

 //Формируем строку с информацией об ошибке

 SErrMess="Ошибка ARJ.EXE! Код "+RetCode;

 return false;

}
 

Полностью содержимое файла DateArc.wsc приведено в листинге 10.4.

Листинг 10.4. СОМ-объект
DateArc.WSC
(JScript)

<?xml version="1.0" encoding="windows-1251"?>

<component>

 <registration description="DateArc" progid="DateArc.WSC"

version="1.00"

classid="{424ac2bc-5732-4dea-be17-0211af99cd79}">

 <script language="JScript">

<![CDATA[

var WshShell;

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

var vbInformation=64;

function Register {

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

 WshShell = new ActiveXObject("WScript.Shell");

 WshShell.Popup("Компонент зарегистрирован в системе",0,

"Компонент для архивирования файлов",vbInformation);

}

function Unregister {

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

 WshShell = new ActiveXObject("WScript.Shell");

 WshShell.Popup("Компонент удален из системы",0,

"Компонент для архивирования файлов",vbInformation);

}

]]>

</script>

 </registration>

 <public>

<property name="SFrom">

<get/>

<put/>

</property>

<property name="SArch">

<get/>

<put/>

</property>

<property name="SPref">

<get/>

<put/>

</property>

<property name="SMask">

<get/>

<put/>

</property>

<property name="SErrMess">

<get/>

</property>

<method name="FilesToArchiv">

</method>

 </public>

 <script language="JScript">

<![CDATA[

var description = new DateArc;

//Конструктор объекта DateArc

function DateArc {

 //Объявляем свойства объекта DateArc

 this.get_SFrom = get_SFrom;

 this.put_SFrom = put_SFrom;

 this.get_SArch = get_SArch;

Поделиться:
Популярные книги

Первый среди равных. Книга IV

Бор Жорж
4. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга IV

Локки 10. Потомок бога

Решетов Евгений Валерьевич
10. Локки
Фантастика:
фэнтези
юмористическое фэнтези
героическая фантастика
боевая фантастика
5.00
рейтинг книги
Локки 10. Потомок бога

Герой

Мазин Александр Владимирович
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Герой

Хозяин Стужи 3

Петров Максим Николаевич
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи 3

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Убивать чтобы жить 4

Бор Жорж
4. УЧЖ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 4

Кодекс Охотника

Винокуров Юрий
1. Кодекс Охотника
Фантастика:
фэнтези
юмористическое фэнтези
попаданцы
боевая фантастика
5.00
рейтинг книги
Кодекс Охотника

Феодал. Том 2

Рэд Илья
2. Диктатура Параметров
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Феодал. Том 2

Алекс и Алекс

Афанасьев Семен
1. Алекс и Алекс
Фантастика:
боевая фантастика
6.83
рейтинг книги
Алекс и Алекс

Крепость над бездной

Лисина Александра
4. Гибрид
Фантастика:
боевая фантастика
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Крепость над бездной

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Мастер 11

Чащин Валерий
11. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер 11

Цикл "Идеальный мир для Лекаря". Компиляция. Книги 1-30

Сапфир Олег
Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Цикл Идеальный мир для Лекаря. Компиляция. Книги 1-30

Тринадцатый X

NikL
10. Видящий смерть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Тринадцатый X