копировать только те файлы, которые были изменены (ключ
/D
);
копировать все подкаталоги, включая пустые (ключ
/Е
);
создавать, при необходимости, каталог, в который производится копирование (ключ
/I
);
перезаписывать файлы без подтверждения пользователя (ключ /Y).
Замечание
Подробнее о ключах команды
XCOPY
можно узнать из встроенной справки для этой команды. Для вывода этой справки на экран необходимо в командном окне запустить
XCOPY
с ключом
/?
; для вывода справки в текстовый файл нужно воспользоваться символом перенаправления вывода '
>
', например:
XCOPY /? > spr.txt
.
Пути к каталогу, где хранятся документы
пользователя, и к каталогу, в который будет производиться копирование, формируются с помощью переменных среды
%HomeDir%
,
%HomePath%
и
%UserName%
. Описание этих и некоторых других переменных среды, которые определены в Windows, приведено в табл. 11.2.
Таблица 11.2. Переменные среды, полезные для использования в сценариях входа/выхода
Переменная
Описание
%COMSPEC%
Путь к командному интерпретатору
%HOMEDIR%
Буква переопределенного диска на компьютере пользователя, которая ссылается на сетевой ресурс, содержащий личный каталог пользователя
%HOMEDRIVE%
Локальный, либо перенаправленный диск, на котором расположен личный каталог
%HOMEPATH%
Путь к личному каталогу
%HOMESHARE%
Имя каталога общего доступа, включающее личный каталог и локальный, либо переопределенный диск
%OS%
Операционная система, управляющая рабочей станцией
%PROCESSOR_ARCHITECTURE%
Архитектура процессора (например, х86) рабочей станции пользователя
%SYSTEMDRIVE%
Диск, на котором находится системный каталог Windows
%SYSTEMROOT%
Путь к системному каталогу Windows
%PROCESSOR_LEVEL%
Тип процессора рабочей станции пользователя
%TEMP%
Путь к каталогу для хранения временных файлов
%USERDOMAIN%
Домен, в котором зарегистрирован пользователь
%USERNAME%
Имя, под которым регистрировался при входе в сеть пользователь
Так как имена каталогов, присутствующих в команде XCOPY, могут содержать пробелы, эти имена взяты в кавычки.
Сценарий WSH
Для создания нужных нам резервных копий можно также написать сценарий WSH (назовем этот сценарий Logoff.js), который, конечно, будет намного больше по объему, чем командный файл, но будет выводить сообщения в красивые графические диалоговые окна (рис. 11.21–11.23).
Сначала в сценарии Logoff.js создаются экземпляры объектов
WshShell
,
FileSystemObject
и
WshSpecialFolders
, после чего в переменную
SHomePath
заносится путь к каталогу с документами текущего пользователя (специальная папка с именем My Documents):
Рис. 11.21. Диалоговое окно с запросом о необходимости копирования
Если пользователь согласен, мы копируем нужный каталог с помощью метода
CopyFolder
, причем делаем это внутри блока
try
конструкции
try…catch
.
IsError=false;
try {
//Производим копирование каталога
FSO.CopyFolder(SHomePath,SBackupPath);
}
В случае возникновения ошибки переменной IsError в блоке catch присваивается значение true, а на экран выводится диалоговое окно с соответствующим сообщением (см. рис. 11.22):
catch (е) { //Обрабатываем возможные ошибки
if (е != 0) {
//Выводим сообщение об ошибке
IsError=true;
Mess="Ошибка при копировании каталога "+SHomePath+"\nКод ошибки: " + е.number + "\nОписание: " + е.description;