Консольные команды Windows NT Продолжение.

Консольные команды Windows NT Продолжение. Начало КГ №25.
Команда TITLE

Изменение заголовка окна командной строки.
TITLE [строка], где строка — это будущий заголовок окна командной строки (записывается без кавычек). После задания заголовка окна он может быть изменен только повторным вызовом команды TITLE. Использование данной команды может быть полезно в командных файлах. Так, выполнение примера, который приведен ниже, будет сопровождаться появлением соответствующей надписи в заголовке окна:
@ECHO OFF
TITLE Копируются файлы...
COPY \\Server\Share\*.doc C:\User\Common\*.doc
ECHO Копирование закончено.
TITLE Процесс завершен —

Команда АТ
С помощью этой команды можно запускать команды и программы в определенное время.
Синтаксис команды:
AT [\\имя компьютера] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\имя компьютера] time [/INTERACTIVE]
[ /EVERY:дата[,...] | /NEXT:дата[,...]] "команда"
\\имя компьютера — указывает на удаленный компьютер, на котором могут быть запущены планируемые задачи. Если этот параметр не указан, то по умолчанию предполагается тот компьютер, на котором запускается команда АТ;
id — идентификатор, назначенный указанной команде;
/delete — отменяет намеченную команду. Если id опущен, все назначенные команды на компьютере отменены;
/yes — этот параметр в случае использования с предыдущим параметром (/delete) автоматически включает подтверждение для всех запросов;
time — время выполнения команды (в 24-часовом формате часы:минуты);
/interactive — позволяет команде AT обмениваться с подключенными на данный момент в системе пользователями;
/every:дата[,...] — выполняет команду в каждый указанный день (дни) недели или месяц. Если дата опущена, подразумевается текущий день месяца;
/next:дата[...] — выполняет указанную команду при следующем наступлении указанной даты (например, в следующий четверг). Если дата не указанна, по умолчанию принимается текущий день месяца;
"команда" — указывается команда Windows NT или пакетная программа, которая будет выполнена. Имя файла должно указываться полностью. При этом, если выполняется какая-либо из внутренних команд, например, COPY или DIR, а не исполняемый файл, то необходим запуск командного интерпретатора с ключом /С, например: AT 10:00 "CMD /C DIR > C:\test.out.
Пример использования команды AT.
Условие: требуется организовать ежедневное резервное копирование на данный компьютер в каталог D:\Backup c сервера \\Sheff (полный путь: \\Sheff\Data\Data1) с подключением сетевого диска. Копирование должно начинаться в 2:00 и для уменьшения сетевого трафика копируются только измененные за прошедший день файлы (включая и скрытые).
Результат: my_backup.bat
NET USE H: \\SHEFF\DATA
XCOPY /E /D /H /C H:\ DATA1 D:\BACKUP\DATA1
NET USE H: /DELETE
При необходимости ежедневного запуска этого файла в заданное время можно использовать следующую команду: AT 2:00 /EVERY: M, T, W, Th, F, S, Su, D:\my_backup.bat

Команды для работы с файловой системой.
Команда CD (Chdir)

Используется для вывода имени текущего каталога или перехода в другую папку. При использовании только с именем диска (например, chdir C:) команда chdir выводит имена текущих диска и папки. Выполненная без параметров команда chdir выводит текущие диск и каталог.
Синтаксис
chdir [[/d] [диск:][путь] [..]] [[/d] [диск:][путь] [..]]
cd [[/d] [диск:][путь] [..]] [[/d] [диск:][путь] [..]]
Параметры:
/d — одновременная смена текущего диска или текущего каталога на диске, т.е. для смены текущего каталога, например, с c:\Programs на d:\Text, достаточно ввести команду
cd /d D:\text,
а не две
D:\
cd Text
[диск:][путь] — задание имени диска (если он отличается от текущего) и каталога, в который требуется перейти.
[..] — переход в родительскую папку.
/? — отображение справки в командной строке.

Имя текущего каталога в строке вызова преобразуется к тому же регистру символов, что и для существующих имен на диске. Так, например, команда CD C:\TEMP на самом деле сделает текущим каталог C:\Temp, если он существует на диске.
Кроме того, при включении расширенной обработки команд команда CD (CHDIR) перестает рассматривать пробелы как разделители, что позволяет перейти в подкаталог, имя которого содержит пробелы, не заключая все имя каталога в кавычки. Например, команда:
cd \winnt\profiles\username\programs\start menu
приводит к тому же результату, что и
cd "\winnt\profiles\username\programs\start menu"
При отключении расширенной обработки команд используется только второй вариант.
Команду CD (CHDIR) можно использовать как в командных файлах, так и в консоли восстановления. Например, если при работе на диске D требуется скопировать все файлы каталогов \backup\start и \Worx\start на диске C в корневой каталог диска D, введите следующую последовательность команд:
chdir c:\backup\start
copy c:*.* d:\
chdir c:\Worx\start
copy c:*.* d:\
Если требуется скопировать те же файлы в текущий каталог диска D, введите следующие команды:
chdir c:\backup\start
copy c:*.* d:
chdir c:\Worx\start
copy c:*.* d:

Команда MKDIR.
Синтаксис
mkdir [диск:]путь
Параметры
диск: — диск, на котором будет создана новая папка.
путь — обязательный параметр. Указывает на имя и местоположение новой папки. Максимальная длина пути определяется типом файловой системы.
Если расширения командного процессора разрешены (по умолчанию), то данная команда позволяет создавать и вложенные каталоги. Например, чтобы создать папку Налоги с подпапкой Ставки, содержащей папку Текущие, введите:
mkdir \Налоги\Ставки\Текущие
Данная команда аналогична использованию следующей последовательности команд (если расширения командного процессора запрещены):
mkdir \Налоги
chdir \Налоги
mkdir Ставки
chdir Ставки
mkdir Текущие

Команда RMDIR.
Используется для удаления каталогов.
Синтаксис
rmdir [диск:]путь [/s] [/q]
rd [диск:]путь [/s] [/q]
Параметры
[диск:]путь — задает диск и местоположение каталога для удаления.
/s — удаляет указанный каталог и все подкаталоги вместе с файлами. Параметр /s используется для удаления дерева каталогов.
/q — запускает rmdir в скрытом режиме. Команда удаляет каталоги без запроса подтверждения.
Команду можно использовать в консоли восстановления. При попытке удаления каталогов со скрытыми и системными файлами появится следующее сообщение: "Каталог не является пустым". В этом случае для получения списка скрытых и системных файлов следует использовать команду dir, а для просмотра и смены атрибутов — команду attrib.
Если перед первым именем каталога вставлена обратная косая черта (\), этот каталог будет рассматриваться как подкаталог корневого каталога независимо от имени текущего каталога. Если обратной косой черты нет, каталог будет рассматриваться как подкаталог текущего каталога.
Например, для удаления каталога \user\smith вначале необходимо удостовериться в том, что он не содержит файлов. Для этого наберите в командной строке:
dir \user\smith /a
На экране должны быть выведены только символы "." и "..".
Затем из любого каталога, кроме \User\Smith, запустите следующую команду:
rmdir \user\smith
Для удаления каталога \User, всех файлов и всех подкаталогов, используйте следующую команду:
rmdir /s \user

Команда DEL(Erase).
Служит для удаления заданных файлов.
Синтаксис
del [диск:][путь] имя_файла [ ...] [/p] [/f] [/s] [/q] [/a[:атрибуты]]
erase [диск:][путь] имя_файла [ ...] [/p] [/f] [/s] [/q] [/a[:атрибуты]]

Параметры
[диск:][путь] имя_файла — задание расположения и имени файла для удаления. Параметр имя_файла является обязательным. Допускается использование нескольких имен файлов. Имена файлов следует разделять пробелом, запятой или точкой с запятой.
/p — задание удаления с подтверждением для каждого файла.
/f — задание удаления файлов с атрибутом "Только чтение".
/s — удаление заданных файлов в каталоге и всех его подкаталогах. Выводит имена удаляемых файлов.
/q — установка автоматического режима. Не выводится подтверждение на удаление.
/a — удаление файлов с заданными атрибутами. Атрибуты могут задаваться следующими параметрами:
r — Только чтение
a — Архивный
s — Системный
h — Скрытый
— — Префикс "нет"
Например, чтобы удалить все скрытые файлы в текущем каталоге, необходимо выполнить следующую команду:
del *.*/A:H
Если перед параметром, указывающим на атрибуты файла, указать знак "-" (минус), то будут удаляться все файлы с атрибутом, отличным от указанного:
del *.*/A:-H
Чтобы удалить все файлы из папки Test на диске C, можно воспользоваться одной из следующих команд:
del C:\Test
del C:\Test\*.*
Можно заметить также, что команда del доступна в консоли восстановления.

Команды копирования REPLACE и XCOPY.
Команда REPLACE.

Заменяет файлы в одном каталоге файлами с теми же именами из другого каталога. Команда replace также может быть использована для добавления только тех файлов, которых еще нет в каталоге.
Синтаксис
replace [диск1:][путь1] имя_файла [диск2:][путь2] [/p] [/r] [/s] [/w] [/u]
Параметры
[диск1:][путь1] имя_файла — задает местонахождение и имя файла или набора исходных файлов.
[диск2:][путь2] — задает местонахождение файла-результата. Имена замещаемых файлов не могут быть заданы. Если ни диск, ни каталог не заданы, используется текущий диск и текущий каталог.
/a — добавляет, а не перезаписывает файлы в каталог-результат. Нельзя использовать данный параметр совместно с параметром /s или /u.
/p — добавляет или перезаписывает файлы с подтверждением.
/r — замещает файлы, предназначенные только для чтения, так же, как и обычные файлы. Если этот параметр не задан, а программа пытается заменить файл, предназначенный только для чтения, на экран будет выведено сообщение об ошибке и операция замены будет остановлена.
/w — перед началом поиска исходных файлов система будет ждать, пока пользователь вставит диск в дисковод. Если ключ /w не задан, замена или добавление файлов начнется сразу же после нажатия клавиши ENTER.
/s — ищет по всем подкаталогам каталога-назначения и заменяет файлы с подходящими именами. Нельзя использовать параметр /s совместно с параметром командной строки /a. Команда replace не ищет подкаталоги, указанные параметром путь1.
/u — заменяет (обновляет) только те файлы, которые имеют более раннюю дату модификации, чем файлы в исходном каталоге. Этот параметр несовместим с параметром /a.
И при замене, и при добавлении файлов команда replace выводит их имена на экран. По окончании работы выводится на экран итоговая строка в одном из следующих форматов:
nnn файлов добавлено
nnn файлов заменено

ни один файл не добавлен
ни один файл не заменен
Ниже приводятся коды завершения команды replace:
Код завершения — Описание
0 — Файлы успешно заменены или добавлены командой replace
1 — Команда replace обнаружила некорректную версию MS-DOS 2 — Команда replace не может найти исходные файлы
3 — Команда replace не может найти исходные файлы или файлы-результаты
5 — Пользователь не имеет доступа к заменяемым файлам
8 — Недостаточно системной памяти для работы команды
11 — В строке вызова команды содержится синтаксическая ошибка
В пакетных программах можно использовать параметр уровень_ошибки команды if для анализа кода завершения команды replace.
Примеры использования команды replace.
Предположим, что несколько каталогов на диске C содержат различные версии файла Phones.txt, который включает имена клиентов и их телефонные номера. Для замены всех этих файлов новейшей версией с диска в дисководе A может служить следующая команда:
replace a:\phones.cli c:\ /s
Если же требуется добавить новый драйвер принтера в каталог Tools на диске C, в котором уже содержится несколько файлов драйверов принтеров для текстовых процессоров:
replace a:*.prd c:\tools /a
Эта команда просматривает текущий каталог диска A и находит все файлы с расширением .prd, а затем добавляет эти файлы в каталог Tools на диске C. Так как задан параметр /a, команда replace добавит только те файлы, которых еще нет на диске C.

Команда XCOPY.
Копирует файлы и каталоги, включая подкаталоги.
Синтаксис
xcopy источник [результат] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:мм-дд-гггг]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:файл1[+[файл2]][+[файл3]] [{/y|/-y}] [/z]
Параметры
источник — обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результат — задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/w — выводит следующее сообщение с ожиданием подтверждения начала копирования:
"Нажмите любую клавишу, чтобы начать копирование файлов"
/p — запрашивает подтверждение при создании каждого файла-результата.
/c — игнорирует ошибки.
/v — проверяет каждый скопированный файл на соответствие его оригиналу. Данная команда не используется в Windows XP. Она предназначена для обеспечения совместимости с файлами MS-DOS.
/q — отменяет вывод на экран сообщений команды xcopy.
/f — выводит имена исходных файлов и файлов-результатов в процессе копирования.
/l — отображает список копируемых файлов.
/g — создает незашифрованные файлы-результаты.
/d[:мм-дд-гггг] — копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/u — копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/i — если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/s — копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/e — копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t.
/t — копирует только структуру подкаталога (т.е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/k — копирует файлы с атрибутом "только для чтения" с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут "только для чтения".
/r — копирует файлы с атрибутом "только для чтения".
/h — копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/a — копирует только те файлы, которые имеют установленный атрибут "архивный". При использовании параметра /a атрибут "архивный" у исходных файлов не меняется. Сведения об установке атрибутов с помощью команды attrib см. по ссылке "См. также".
/m — копирует только те файлы, которые имеют установленный атрибут "архивный". В отличие от параметра /a, параметр /m очищает атрибут "архивный" у скопированных файлов. Сведения об установке атрибутов с помощью команды attrib см. по ссылке "См. также".
/n — копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/o — копирует сведения о принадлежности файлов и об избирательной таблице управления доступом (DACL).
/x — копирует сведения о параметрах аудита файла и о системной таблице управления доступом (SACL) (подразумевается наличие /p).
/exclude:файл1[+[файл2]][+[файл3]] — определяет список файлов, содержащих строки.
При соответствии выведенной строки части пути копируемого файла он исключается из процесса копирования. Например, если указана строка "\Obj\", исключаются все файлы, расположенные в каталоге "Obj". Например, если указана строка ".obj", исключаются все файлы с расширением .obj.
/y — устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-y — выдает запрос на подтверждение перезаписи существующего конечного файла. Можно применять параметр /y в переменной среде COPYCMD. Эта настройка может быть переопределена использованием параметра /-y в командной строке. По умолчанию если команда copy выполняется не в пакетной программе, при замене требуется подтверждение.
/z — копирует по сети в режиме перезапуска. Если во время фазы копирования теряется сетевое подключение (например, если сервер переходит в автономный режим, разрывая подключение), копирование возобновляется после восстановления подключения. Использование параметра /z команды вызывает также отображение доли (в процентах) завершенной операции копирования для каждого файла.
При копировании при помощи команды xcopy файлов на том, не поддерживающий шифрованную файловую систему (EFS), возникнет ошибка. Следует предварительно расшифровать файлы или копировать их на том, поддерживающий EFS.
Эту команду можно использовать и для объединения нескольких файлов, для этого укажите один файл-результат, но несколько файлов-источников (с помощью подстановочных знаков или формата файл1+файл2+файл3).
Если при копировании не указывать параметр результат, xcopy будет копировать файлы в текущий каталог. В том случае, когда параметр результат не содержит существующий каталог или не заканчивается обратной чертой (\), выводится следующее сообщение:
Что означает destination:
имя файла или каталога
(F = файл, D = каталог)?
Нажмите F, если файл или файлы должны копироваться в файл. Нажмите D, если файл или файлы должны копироваться в каталог.
Для устранения вывода этого сообщения используйте параметр /i, в результате чего команда xcopy предполагает, что результат является каталогом, если источник представляет собой несколько файлов или каталогов.
Следует отметить, что команда xcopy создает файлы с установленным атрибутом "архивный" независимо от состояния этого атрибута у исходных файлов.
Для анализа кодов завершения, выведенных командой xcopy, можно использовать параметр уровень_ошибки в командной строке if пакетных программ. В следующей таблице перечислены коды завершения с кратким описанием.
Код завершения — Описание
0 — Файлы скопированы без ошибок
1 — Файлы для копирования не найдены
2 — Нажата комбинация CTRL+C для остановки команды xcopy
4 — Возникла ошибка инициализации. Недостаточно места в памяти или на диске, введено неверное имя диска или неверный синтаксис вызова команды
5 — Диск защищен от записи
Примеры использования команды.
Чтобы копировать все файлы и подкаталоги (включая пустые подкаталоги) с диска A на диск B, введите:
xcopy a: b: /s /e
Чтобы включить в операцию копирования предыдущего примера системные и скрытые файлы, следует использовать параметр /h:
xcopy a: b: /s /e /h
Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, измененными после 1 июня 2002 года, введите:
xcopy \rawdata \reports /d:01-06-2002
Чтобы обновить файлы предыдущего примера, уже существующие в каталоге \Reports, независимо от их даты, введите следующую команду:
xcopy \rawdata \reports /u
Для получения списка файлов, которые были бы скопированы в предыдущем примере, следует ввести команду:
xcopy \rawdata \reports /d:01-06-2002 /l > xcopy.out
Список файлов, которые были бы скопированы, находится в файле Xcopy.out.
Для того чтобы скопировать каталог \Customer и все подкаталоги \\Public\Address на сетевой диск H, сохранить у файлов атрибут "только для чтения", введите команду:
xcopy \customer h:\public\address /s /e /k /p
Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог \Address, и устранить вывод сообщения о создании нового каталога, добавьте параметр /i следующим образом:
xcopy \customer h:\public\address /s /e /k /p /i
Для запуска программы xcopy и анализа кодов завершения можно создать пакетный файл и использовать оператор if для обработки кодов завершения в случае возникновения ошибок. Например, следующая пакетная программа использует замещаемые параметры для задания источника xcopy и результата:
@echo off
rem COPYIT.BAT копирует все файлы во всех подкаталогах
rem исходного диска или каталога (%1) на другой диск

rem или в другой каталог (%2)

?? xcopy %1 %2 /s /e

??if errorlevel 4 goto lowmemory
?if errorlevel 2 goto abort
?if errorlevel 0 goto exit

??:lowmemory ?
echo Недостаточно памяти для копирования файлов,
задан недопустимый ?echo диск или ошибка в синтаксисе командной строки.
?goto exit
??
:abort ?
echo Нажата комбинация CTRL+C для остановки копирования.
?goto exit ?
?
:exit

Эта пакетная программа может быть использована для копирования всех файлов каталога C:\Prgmcode и его подкаталогов на диск B следующим образом:
copyit c:\prgmcode b:
Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B — вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

Продолжение следует...

FM



Компьютерная газета. Статья была опубликована в номере 26 за 2002 год в рубрике soft :: win

©1997-2021 Компьютерная газета