Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программное обеспечение » Windows Script Host для Windows 2000/XP - Андрей Попов

Windows Script Host для Windows 2000/XP - Андрей Попов

Читать онлайн Windows Script Host для Windows 2000/XP - Андрей Попов

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 124 125 126 127 128 129 130 131 132 ... 175
Перейти на страницу:

  SErrMess="Не найден каталог для хранения архивов "+SArch;

В  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

где 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;

В this.put_SArch = put_SArch;

В this.get_SPref = get_SPref;

В this.put_SPref = put_SPref;

В this.get_SMask = get_SMask;

В this.put_SMask = put_SMask;

В this.get_SErrMess = get_SErrMess;

 //Объявляем метод FilesToArchiv

В this.FilesToArchiv = FilesToArchiv;

}

var SFrom,В В В  //Рсходный каталог для архивирования

    SArch,    //Каталог, в котором будет создаваться архив

    SPref,    //Префикс файла

    SMask,    //Маска, по которой отбираются файлы для

              //архивирования

    SErrMess; //Текст сообщения об ошибке

//Чтение и запись свойства SFrom

function get_SFrom() {

В return SFrom;

}

function put_SFrom(newValue) {

В SFrom = newValue;

}

//Чтение и запись свойства SArch

function get_SArch() {

В return SArch;

}

function put_SArch(newValue) {

В SArch = newValue;

}

//Чтение и запись свойства SPref

function get_SPref() {

В return SPref;

}

function put_SPref(newValue) {

В SPref = newValue;

}

//Чтение и запись свойства SMask

function get_SMask() {

В return SMask;

}

function put_SMask(newValue) {

В SMask = newValue;

}

//Чтение свойства SErrMess

function get_SErrMess() {

В return SErrMess;

}

//Вспомогательная функция для символьного представления даты

function NowIs() {

В var d, s="", s1="";

 //Создаем объект Date (текущая дата)

В d=new Date();

 //Выделяем номер месяца

В s+=(d.getMonth()+1);

 //Если месяц представляется одним символом, добавляем слева "0"

В if (s.length==1) s="0"+s;

 //Выделяем в дате день

В s1+=d.getDate();

1 ... 124 125 126 127 128 129 130 131 132 ... 175
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Windows Script Host для Windows 2000/XP - Андрей Попов.
Комментарии