return false;
}
//Если оба каталога существуют, возвращаем true
return true;
}
Основной функцией, осуществляющей архивирование файлов, является 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
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.
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>