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;
Поделиться:
Популярные книги
Фишер. По следу зверя. Настоящая история серийного убийцы
Реальные истории
Документальная литература:
истории из жизни
биографии и мемуары
5.00
рейтинг книги
Неправильный лекарь. Том 1
1. Неправильный лекарь
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Я все еще не князь. Книга XV
15. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Темный мир
6. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
попаданцы
5.00
рейтинг книги
Герой
4. Варяг
Фантастика:
альтернативная история
9.10
рейтинг книги
Барон не играет по правилам
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Адвокат Империи 2
2. Адвокат империи
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Ермак. Телохранитель
2. Ермак
Фантастика:
альтернативная история
7.50
рейтинг книги
Идеальный мир для Лекаря 29
29. Лекарь
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Третий. Том 2
2. Отпуск
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Великий род
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сотник
2. Индийский поход
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Двойник Короля 4
4. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00