WWW.LIB.KNIGI-X.RU
БЕСПЛАТНАЯ  ИНТЕРНЕТ  БИБЛИОТЕКА - Электронные материалы
 

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ ВОЛЖСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ) ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ...»

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ВОЛЖСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ)

ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО БЮДЖЕТНОГО ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ВОЛГОГРАДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

КАФЕДРА «ИНФОРМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ»

Д.Н. Лясин, С.Г. Саньков Командные файлы ОС MS Windows Методические указания Волгоград УДК 004.056

Рецензент:

канд. тех. наук доцент В. И. Капля Издается по решению редакционно-издательского совета Волгоградского государственного технического университета Лясин, Д.Н. Саньков С.Г. Командные файлы операционной системы MS Windows [Электронный ресурс]: методические указания / Д.Н. Лясин, С.Г.

Саньков//Сборник «Методические указания» Выпуск.-Электрон. текстовые дан.(1файл:207 Kb) – Волжский: ВПИ (филиал) ВолгГТУ,2012.Систем.требования:Windows 95 и выше; ПК с процессором 486+; CDROM.

Содержатся сведения, необходимые для изучения средств автоматизации администрирования операционных систем семейства Windows в текстовом режиме с использованием командного интерпретатора. Рассмотрены принципы работы командного интерпретатора, приведены описания основных команд ОС Windows, дано описание командных файлов и основных структурных средств их программирования. Приведен порядок выполнения и варианты заданий к лабораторным работам.



Предназначены для студентов, обучающихся по направлению 230100 "Информатика и вычислительная техника" и направлению 231000 "Программная инженерия" всех форм обучения в рамках курсов «Системное программное обеспечение», «Основы системного программного обеспечения» и «Операционные системы».CD-ROM ©Волгоградский государственный технический университет, 2012 © Волжский политехнический институт, 2012 1 Лабораторная работа № 1. Командные файлы ОС Windows Цель работы: изучить интерфейс командной строки ОС Windows, приобрести навыки решения типовых задач администрирования операционной системы Windows с использованием командных файлов.

1.1 Теоретические основы Командный интерпретатор Интерфейс командной строки является мощным и гибким инструментом решения широкого круга административных задач. Несмотря на то, что графический интерфейс ОС Windows кажется более удобным и эффективным для управления ресурсами компьютера, использование командной строки выглядит предпочтительнее при необходимости автоматизации или масштабирования задач администрирования. При этом использование встроенных в операционную систему средств поддержки выполнения скриптов, таких как внутренние и внешние команды, операторы, переменные, позволяет не прибегать к сторонним компиляторам высокоуровневых языков для решения даже очень сложных задач – стандартная поставка операционной системы содержит все необходимые инструменты.

Операционная система Windows поддерживает командный диалог с пользователем с использованием командного интерпретатора или, иначе, оболочки командной строки (command shell). Его назначение – находясь в оперативной памяти принимать от оператора и выполнять команды. В Windows 9x, как и в MS-DOS, командный интерпретатор по умолчанию был представлен исполняемым файлом command.com. Начиная с версии Windows NT операционная система предоставляет пользователю альтернативный и более функциональный интерпретатор команд Cmd.exe.

Файл командного интерпретатора в ОС Cmd.exe Windows NT/2000/XP/Vista/7 находятся в каталоге %SystemRoot%\SYSTEM32, где переменной среды %SystemRoot% соответствует путь к системному каталогу Windows). Запустить командный интерпретатор можно, послав на исполнение файл Cmd.exe любым доступным способом: из Проводника, файлового менеджера, пункта главного меню Выполнить… (Run). В результате откроется новое окно командного интерпретатора (рис.1), в котором можно запускать команды и видеть результат их выполнения.

Рисунок 1. Окно командной оболочки в Windows XP с результатом выполнения команды vol.

Команды Все команды, которые оператор может выполнить в окне интерпретатора Cmd.exe, делятся на внутренние и внешние. Внутренние команды распознаются самим интерпретатором. К ним относятся, например, cls – очистка экрана, time – просмотр и изменение текущего времени, dir – просмотр содержимого папки.

Внешние команды оформлены как отдельные программы, которые по умолчанию находятся в той же папке, что и сам интерпретатор cmd.exe. Внешними являются, например, команды: xcopy – копирование файлов и каталогов, at – запуск программ и команд в заданное время, cacls – просмотр и изменение прав доступа к файлам и папкам.

Рассмотрим общие принципы работы с командной строкой. В ответ на стандартное приглашение вида полный_ путь_к_ текущей_ папке_ можно ввести имя команды с параметрами и ключами. Справку по конкретной команде можно получить в окне оболочки, если запустить команду с ключом /?

(рис.2).

Рисунок 2. Вывод справки о работе команды копирования файлов copy

Детальное описание каждой команды не входит в объем настоящих методических указаний, но соответствующий справочник можно найти, например, в [5].

Список команд можно получить и в окне командной оболочки, выполнив команду help.

По умолчанию команды выводят результаты своего исполнения на экран монитора, и принимают входные данные с клавиатуры. Но это соглашение можно изменить и для этого служат операторы перенаправления.

Операторы перенаправления команд используются для изменения местоположений потоков ввода и вывода команд, заданных по умолчанию, на какиелибо другие. Местоположение потоков ввода и вывода называется дескриптор. В таблице 1 описаны операторы перенаправления потоков ввода и вывода команд.

С использованием операторов перенаправления можно направить вывод результатов работы команды (скрипта) в заданный файл или использовать эти результаты в качестве входных параметров для выполнения другой команды (скрипта). Это позволяет организовывать эффективную коммуникацию между процессами при минимальных затратах времени и ресурсов.

Таблица 1. Операторы перенаправления ввода/вывода команд Оператор перенаОписание правления Записывает данные на выходе команды вместо окна командной строки в файл или на устройство, например, на принтер.

Читает поток входных данных команды из файла, а не с клавиатуры.

Добавляет выходные данные команды в конец файла, не удаляя при этом существующей информации из файла.

Считывает данные на выходе одного дескриптора как & входные данные для другого дескриптора.

Считывает входные данные одного дескриптора как выходные данные другого дескриптора.

Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна | под названием «канал».

По умолчанию, входные данные команды (дескриптор STDIN) отсылаются с клавиатуры интерпретатору команд Cmd.exe, далее Cmd.exe отправляет выходные данные команды (дескриптор STDOUT) в окно командной строки. В следующей таблице представлены доступные дескрипторы.

Таблица 2. Дескрипторы устройств ввода/вывода ОС Windows деск- Числовой эквиваОписание риптор лент дескриптора STDI Ввод с клавиатуры N STDO Вывод в окно командной строки UT Приемник сообщений об ошибках при STDE выполнении команд RR Эти дескрипторы определяются индивиUND дуально для каждой прикладной проEFINED граммы.

Номера от 0 до 9 представляют первые 10 дескрипторов. Для запуска программы и перенаправления любого из 10 дескрипторов используется интерпретатор команд Cmd.exe. Для задания требуемого дескриптора перед оператором перенаправления введите его номер. Если дескриптор не определен, то по умолчанию оператором перенаправления ввода «» будет ноль (0), а оператором перенаправления вывода «» будет единица (1). После ввода оператора «» или «» необходимо указать, откуда читать и куда записывать данные. Можно задать имя файла или любой из существующих дескрипторов. Для задания перенаправления в существующие дескрипторы используется амперсанд (&), затем номер требуемого дескриптора (например, &номер_дескриптора). Например, для перенаправления дескриптора 2 (STDERR) в дескриптор 1 (STDOUT) введите: 1&2.





Например, чтобы сообщения об ошибках и результаты работы скрипта выводились в файл, подаем команду:

myScript.bat res.txt 2&1 Здесь сначала стандартный вывод перенаправляется в файл, а затем дескриптор потока STDERR перенаправляется туда же, куда перенаправлен STDOUT.

Если же поменять местами операции перенаправления:

myScript.bat 2&1 1res.txt то STDERR будет сначала перенаправлен на поток STDOUT (консоль), а уже затем STDOUT перенаправляется в файл. В результате полезный вывод будет направлен в файл, а ошибки – на экран.

В операторах перенаправления вместо имени файла можно указывать стандартные обозначения устройств компьютера.

В Windows поддерживаются следующие имена устройств: PRN (принтер),LPT1–LPT3 (соответствующие параллельные порты), AUX (устройство, присоединяемое к последовательному порту 1), COM1–COM3 (соответствующие последовательные порты), CON (терминал:

при вводе это клавиатура, при выводе - монитор), NUL (пустое устройство, все операции ввода/вывода для него игнорируются).

Примеры.

Вывод в файл папки.txt списка всех папок из текущей папки dir /A:D /B папки.txt Вывод справки по команде tasklist в файл tasklist _hlp.txt tasklist /? tasklist_hlp.txt Дописать в файл check_connect.txt результат проверки IP-соединения с узлом www.volpi.ru ping www.volpi.ru check_connect.txt Перенаправить сообщения об ошибках работы команды в файл error.txt taskkill /s comp1 /pid 1022 2error.txt Сменить дату на 1.1.2013 echo 1.1.2013 | date В последнем примере использован оператор конвейеризации |. С его помощью можно сообщения, выводимые первой командой, передавать в качестве входных данных для второй команды. В данном случае в качестве входных данных для команды date, ожидающей на входе значение новой даты в формате дд.мм.гггг, использован вывод первой команды (echo), которая выводит на экран заданную строку-параметр.

Если заранее записать новую дату в файл date.txt, то изменение даты возможно и такой командой:

date date.txt Оператор конвейера наиболее эффективен в комбинации с фильтрующими командами. Команды-фильтры дают возможность сортировать, просматривать и отбирать часть выходной информации других команд. Фильтры делят, переупорядочивают или выделяют отдельные части из проходящей через них информации. В приведенной ниже таблице перечислены команды-фильтры, доступные в ОС Windows.

Таблица 3. Команды-фильтры Команда Описание Отображает содержимое файла или вывода команды в одном окне more командной строки за раз.

Поиск указанных символов в файлах или выводе команды.

find Поиск образцов текста в файлах с использованием регулярных findstr выражений Сортировка файлов или вывода команды по алфавиту.

sort Для направления данных из файла на вход фильтра используется символ «меньше» (). Для направления на вход фильтра выхода другой команды используется канал (|).

Команда more выводит содержимое файла или выхода команды в одном окне командной строки за раз. Например, чтобы отобразить содержимое файла List.txt в одном окне командной строки за раз, введите следующую команду: more list.txt (или more list.txt). Отображается одно окно командной строки со сведениями, а затем в нижней части окна командной строки отображается строка -More --. Для перехода к следующему окну командной строки, нажмите любую клавишу Пробел, для вывода следующей строки нажмите Enter, для остановки просмотра следует нажать клавишу q (полный список доступных клавиш см. в справке). Команда more полезна при работе с командами, создающими выход более одного окна командной строки. Например, при выводе дерева каталогов жесткого диска. Если на диске содержится больше каталогов, чем может быть одновременно выведено в окне командной строки, можно использовать команду tree с каналом (|) и команду more. tree c:\ | more На экран будет выведен первое окно командной строки с выходом команды tree, а затем отобразится строка

-- More --.

Команда find проводит поиск заданной строки или текста в файлах. Команда Cmd.exe отображает каждую строку, которая совпадает со строкой или текстом, указанным в окне командной строки. Чтобы использовать команду find в качестве команды-фильтра, необходимо включить символ «меньше» () и строку или текст, которые надо искать либо использовать команду ”канал”. Например, команда dir | find ”.2012” отфильтрует в выводе команды dir все файлы и папки, в строках описания которых встречается строка.2012 (созданные в 2012 году).

Необходимо также помнить, что по умолчанию при поиске команда find учитывает регистр.

Команда sort выполняет сортировку по алфавиту текстового файла или вывода команды. Например, следующая команда сортирует содержимое файла List.txt и отображает результаты в окне командной строки: sort list.txt В этом примере команда sort сортирует строки файла List.txt в алфавитном порядке и выводит результат на экран без изменения файла. Для сортировки вывода команды следует ввести команду, затем символ канала (|) и команду sort (команда | sort).

Например, следующая команда сортирует в алфавитном порядке все запущенные процессы tasklist | sort. Команда sort имеет ряд параметров.

Например, в таком варианте:

dir | sort /+6 сортировка будет осуществляться начиная с 7-го символа (+6 – пропустить первые 6). В выводе команды dir с 7-й позиции начинается год создания файлов и папок, следовательно, команда выведет содержимое текущей папки, отсортированной по годам.

Зачастую решение некоторой практической задачи предполагает выполнение нескольких команд. В этом случае их объединяют в специальные командные файлы, но о них речь пойдет позже. Windows предоставляет возможность объединять несколько команд в одной строке, допуская их последовательное выполнение, а также разрешая обуславливать выполнение одних команд результатами выполнения других.

–  –  –

Примеры.

Вывести на экран содержимое корневой папки диска C:, дождаться нажатия клавиши (команда pause), вывести на экран содержимое корневой папки диска

D:.

dir c:\ & pause & dir d:\

Проверить IP-соединение с узлом www.volpi.ru и если соединения нет вывести на экран текущие параметры сети TCP/IP.

ping www.volpi.ru || ipconfig /all Если в корне диска d: есть файлы с расширением txt, скопировать их в папку tmp, а сами файлы удалить dir d:\*.txt && (xcopy d:\*.txt d:\tmp & del d:\*.txt) В последнем примере использована группировка команд и в случае успешного выполнения команды dir (файлы с заданной маской найдены), выполнятся сразу две команды – копирования файлов xcopy и удаления файлов del.

Командные файлы Представленные в последней таблице операторы являются средствами группировки команд с элементами программирования. Но гораздо эффективнее с задачей компоновки последовательности команд в алгоритмически упорядоченную программу-скрипт можно справиться, создав командный файл.

Командный файл представляет собой обычный текстовый файл с расширением bat (или cmd), в который можно поместить последовательность команд операционной системы, а также ряд инструкций для формирования основных алгоритмических структур последовательного выполнения, ветвления и циклического повторения. Таким образом, командный файл имеет сходство с программами на интерпретируемых алгоритмических языках программирования, но для его исполнения не требуется установки среды программирования или дополнительного интерпретатора, достаточно интерпретатора cmd.exe.

В простейшем случае в командный файл можно записать несколько команд, и они будут выполнены последовательно, друг за другом. Пусть, например, файл arc.bat содержит следующий набор инструкций.

d:

cd d:\tmp d:\winrar\rar a arc.rar *.txt del *.txt Если запустить на выполнение файл arc.bat, то он поместит в архив arc.rar все текстовые файлы из папки tmp, а затем удалит эти файлы. Теперь можно настроить (например, с помощью команды at) ежедневный или еженедельный запуск этого командного файла в определенное время, и папка d:\tmp не будет переполняться текстовыми файлами.

Так можно выполнять командный файл arc.bat каждую субботу в 6:00:

at 6:00 /every:s arc.bat Таким образом, командные файлы являются удобным средством автоматизации выполнения рутинных задач администрирования. Как уже говорилось, возможности командных файлов шире, чем простое перечисление последовательно выполняемых команд. Об основных возможностях командных файлов речь пойдет ниже, здесь же отметим возможность добавлять комментарии в тексты скриптов командных файлов. Строки-комментарии должны начинаться с ключевого слова rem и позволяют на естественном языке внести пояснения в текст скрипта.

Пример:

REM Добавим в архив arc.bat все текстовые файлы из текущей папки d:\winrar\rar a arc.rar *.txt Вывод сообщений из командного файла и дублирование команд Команды пакетного файла выводятся на экран. Это может оказаться нежелательным, отвлекая оператора от результатов работы скрипта подробностями его реализации. В этом случае с помощью команды echo off можно отключить дублирование на экране команд, идущих после нее. Например, если начать скрипт с команды echo off, то в окно не будут выводиться исполняемые команды (кроме самой команды echo off). Отключить дублирование самой команды echo off можно, поместив в начале строки знак @. Этот знак подавляет дублирование команды только из своей строки.

Отказ от дублирования команд на экране может быть отменен. Для этого используется команда echo on.

Таким образом, если начать командный файл с команды @ЕСНО OFF то дублирование команд будет полностью подавлено.

Вывести строку сообщения на экран можно с помощью команды ECHO сообщение Например, ECHO Привет!

Если командный файл исполняется в русифицированной версии Windows, то необходимо учитывать, что в среде командного процессора символы национального алфавита используются в DOS-кодировке. Для переключения между кодовыми страницами Windows и DOS используется команда CHCP номер страницы

rem использовать кодовую страницу 866 (DOS):

CHCP 866

rem использовать кодовую страницу 1251 (WINDOWS):

CHCP 1251 Команда echo. (c точкой непосредственно за словом "echo") выводит на экран пустую строку.

Вывод сообщений командой echo можно перенаправить в файл или другое устройство вывода. Для этого, как нетрудно догадаться, используется описанный в ранее механизм перенаправления ввода/вывода (символы и ).

Например, @ЕСНО OFF ECHO Содержимое папки work по состоянию на report.txt date /t report.txt time /t report.txt dir d:\work report.txt Переменные среды В командном файле имеется возможность работать с переменными среды, которые можно назвать отдаленными аналогами обычных переменных алгоритмических языков программирования. Переменные среды хранятся в памяти, имеют уникальные идентификаторы, с помощью которых к ним можно обращаться, и хранят информацию в строковом виде. Принимаемые значения этих переменных формируются при загрузке, регистрации пользователя в системе, старте или завершении некоторых приложений, а также в сеансе работы с окном командной оболочки.

В Windows различаются два вида переменных среды: переменные среды операционной системы (системные переменные) и переменные среды текущего пользователя.

Системные переменные среды определяются операционной системой и имеют одни и те же значения, для всех пользователей. Например: переменные

comspec (полный путь к командному интерпретатору, comspec=C:

операционной системы, \WINDOWS\system32\cmd.exe), os (название os=windows_NT), SystemRoot (системный каталог операционной системы), Path (определяет пути, которые система проверяет при поиске запущенных программ и команд). Добавлять новые системные переменные или изменять значения существующих могут члены группы администраторов.

Переменные среды текущего пользователя могут иметь разные значения для каждого пользователя на конкретном компьютере. В число таких переменных входят переменные, определяемые в приложениях (например, путь к каталогу, в котором сохраняются файлы приложений).

Переменные среды операционной системы и конкретного пользователя можно увидеть и изменить в диалоговом окне «Переменные среды» из вкладки «Дополнительно» окна свойств для значка «Мой компьютер» (рис. 3).

Из командной строки с переменными среды можно работать с использованием команды set.

Когда открывается новое окно командного интерпретатора, переменные среды обоих типов копируются в переменные среды этого командного окна.

При этом копирование происходит в следующем порядке:

1- Переменные среды операционной системы.

2- Переменные среды пользователя.

3- Переменные из файла %systemRoot%\SYSTEM32\autoexec.nt.

В сеансе работы с окном командной оболочки оператор может добавлять новые переменные среды с использованием команды set. При этом все добавленные в сеансе переменные среды действительно лишь для этого сеанса и теряются после закрытия окна.

Рисунок 3. Графический интерфейс доступа к переменным среды Если запустить команду set без параметров, то в окне отобразятся значения всех переменных среды для текущего сеанса командного окна.

Для определения новой переменной среды команду set необходимо использовать в виде:

SET переменная=строка где переменная - имя новой (или переопределяемой) переменной среды, а строка задает строку символов, присваиваемую указанной переменной.

Например, командная строка SET FileName=tmp.dat создает переменную FileName, принимающую значение tmp.dat.

Значение, присвоенное какой-либо переменной, доступно для обработки в командных файлах, при использовании ее имени, заключенного в знаки процента - %.

Например команда выдачи текста на дисплей ECHO в виде:

rem Выведет строку FileName echo FileName rem Выведет значение переменной FileName - tmp.dat echo %filename%

Чтобы удалить переменную среды, команду set необходимо вызвать в виде:

set имя_переменной=

Например:

rem удаляем переменную среды FileName set FileName= Если имя переменной не найдено в текущей среде, то при возврате команда set имя_переменной установит значение специальной переменной среды errorlevel равным 1. Это свойство можно использовать в командных файлах для определения наличия определенной переменной. Из последнего примера видно, что имена переменных для Cmd.exe регистронезависимы.

Значение некоторых полезных на практике переменных среды по команде set не выдаются.

В основном, это переменные, принимаемые значения которых динамически изменяются, их перечень приведен в таблице 5:

Таблица 5. Динамически изменяемые переменные среды Имя переменной Описание среды Принимает значение строки текущего каталога %CD% Принимает значение текущей даты %DATE% Принимает значение текущего времени %TIME% Принимает значение случайного десятичного числа в %RANDOM% диапазоне 1-32767.

Принимает текущее значение кода завершения команды %ERRORLEVEL% или скрипта ERRORLEVEL Принимает значение версии командного процессора %CMDEXTVERSION% CMD.EXE для расширенной обработки команд.

Принимает значение строки, которая вызвала командный %CMDCMDLINE% процессор В связи с тем, что переменные среды хранят преимущественно строковую информацию, для работы с подобными переменными характерны специфичные операции поиска, замены, удаления подстрок. Командный интерпретатор предоставляет встроенные средства поддержки подобных операций в команде set.

Например, следующая команда:

set переменная1=%переменная2:строка1=строка2% присвоит переменной1 измененное значение переменной2. Команда найдет в переменной2 все вхождения строки1, заменит их на содержимое строки2 и преобразованное таким образом значение переменной2 будет присвоено переменной1.

Рассмотрим пример @echo off set s1=one two three one two three set s2=%s1:one=four% set s3=%s1:two=% echo %s2% echo %s3% В результате получим на экране four two three four two three one three one three Если значение строки должно формироваться как конкатенация (объединение) двух и более других строк, то их достаточно записать последовательно друг за другом:

@echo off set s1=one set s2=two set s3=%s1% %s2% echo %s3% В результате получим на экране one two Еще одна интересная возможность – копирование подстроки. Для этого команду set необходимо вызывать в виде:

set переменная1=%переменная2:~m,n% Эта команда возьмет значение второй указанной переменной (переменная2), вырежет из него подстроку длиной n символов начиная с (m+1)-гo и запишет результат в первую переменную (переменная1).

@echo off set d=12.12.2012 set month=%d:~3,2% set year=%d:~6,4% set hour=%time:~0,2% echo %month% echo %year% echo %hour% Значением переменной month будет значение месяца, а year - года из даты, хранящейся в переменной d в формате dd.mm.yyyy. Значение переменной hour выделяем из переменной окружения %time%.

Зачастую информация, подлежащая хранению и обработке, должна быть представлена в числовом виде. Например, если потребуется подсчитать суммарный размер, занимаемый файлами в папке, или для подсчета количества запущенных процессов. В этом случае команду set необходимо использовать с ключом /A.

set /А переменная=выражение Использование ключа /A означает, что стоящая справа от знака равенства строка является числовым выражением, значение которого необходимо вычислить. Численные значения для команды set — это десятичные числа, кроме чисел с префиксами 0x для шестнадцатеричных чисел и 0 для восьмеричных чисел. Таким образом число 20 можно представить как 0x14 и 024.

Например, если задать команду SET /А Sum=5+6 то значение переменной Sum будет равно одиннадцати.

Все операторы, поддерживаемые командой set, приведены в таблице 6.

Строки таблицы отсортированы в порядке убывания приоритета.

Таблица 6. Операторы, поддерживаемые при арифметических вычислениях командой set.

Оператор Выполнение оператора Группировка () Арифметические действия */%+Логический перенос Поразрядное И & Поразрядное исключающее ИЛИ ^ Поразрядное ИЛИ | Операторы присваивания = *= /= %= += -= &= ^= |= = = Разделитель выражения, В связи с тем, что такие знаки как % & | функционально ”перегружены” (используются для обозначения нескольких операций в разных контекстах использования), то при их использовании необходимо заключить строку выражения в кавычки.

Если в выражении встречается строка, не являющаяся числовой лексемой, то оно будет интерпретирована как имя переменной среды, команда set преобразует ее значение в числовую форму и использует в выражении для формирования результата. Если в выражении используется переменная с именем, не определенным в текущем сеансе командной строки или это значение не может быть преобразовано в числовую форму, то вместо нее подставляется нулевое значение. Это позволяет использовать переменные среды в арифметических выражениях без обрамления их имен знаками %. Следующий пример иллюстрирует выполнения арифметических операций с переменными среды.

@echo off set a=5 set b=25 set /a c=b/a+tmpVar set c В результате выполнения новой переменной среды c будет присвоено значение 5, и на экран будет выведено ее значение (а также всех переменных среды, начинающихся с символа с). Переменная tmpVar не была определена, поэтому ее значение при вычислении значения выражения будет принято за 0.

Значение переменной можно задать и как результат работы команды.

Так можно получить серийный номер тома текущего диска:

@echo off vol | find “:” out.tmp set /p var= out.tmp set serial=%var:~22,9% del out.tmp echo %serial% Использование параметров командной строки Вызов командных файлов можно параметризовать. Под этим подразумевается вызов командного файла с передачей ему от одного до нескольких параметров. В таком случае скрипт, помещенный в командный файл, может обрабатывать различную информацию при разных параметрах вызова, делая его гибче и адаптированнее нуждам оператора. Например, командный файл архивирования файлов в некоторой папке может получать имя обрабатываемой папки из параметров вызова и тогда его можно применять к различным папкам, а не к одной, имя которой жестко прописано в коде командного скрипта.

Для доступа к параметрам командной строки в командном файле применяются символы %0, %1,…,%9. При этом вместо %0 всегда подставляется имя выполняемого пакетного файла, а вместо %1, %2,…, %9 — значения первых девяти параметров командной строки соответственно Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то "лишние" переменные из %1 - %9 являются пустыми строками. Модифицируем ранее рассмотренный пример архивирования и удаления файлов arc.bat.

rem Вызов arc.bat имя_папки маска_файлов имя_архива @echo off d:\winrar\rar a %1\%3 %1\%2 del %1\%2

Теперь этот командный файл необходимо вызывать с тремя параметрами:

в первом передается полный путь к папке с файлами, второй параметр определяет маску файлов, подлежащих архивации и удалению, а третий параметр задает имя архива, в который будут помещены заархивированные файлы.

Обратиться к командному файлу можно так:

arc.bat d:\tmp *.txt arc.rar

А для другой папки, возможно, потребуется архивация файлов с расширением log и вызов командного файла примет вид:

arc.bat d:\work\logs *.log log.rar Если в командный файл передается более 9 параметров, на помощь приходит команда shift, которая сдвигает значения параметров с %0 по %9, копируя каждый параметр в предыдущий, то есть значение %1 копируется в %0, значение %2 — в %1 и т. д. Замещаемому параметру %9 присваивается десятое значение параметра вызова. Если же такой параметр не задан, то переменная %9 получит в качестве значения пустую строку. Необходимо помнить, что не существует команды, обратной shift. Таким образом, не удастся восстановить параметр (%0) после выполнения команды shift.

Команда shift поддерживает ключ /n, который указывает команде начинать сдвиг с n-го аргумента, где n — число от нуля до восьми.

Например:

shift /3 сдвинет %4 на %3, %5 на %4 и т. д. %0, %1 и %2 останутся неизменными.

Если в командной строке задано больше десяти параметров, то команду shift можно использовать несколько раз.

Для практических случаев использования командных файлов нередки случаи, когда в качестве параметров им передаются имена файлов и папок. В этом случае в командном файле может встать проблема выделения из этого имени составляющих частей – названия диска, пути, непосредственно имени или расширения файла. Для автоматического выделения подобных объектов можно использовать операторы, перечисленные в таблице 7.

Таблица 7 - Операторы для заменяемых параметров Операторы Описание Переменная %n расширяется до полного имени файла %~Fn Из переменной %n выделяется только имя диска %~Dn Из переменной %n выделяется только путь к файлу %~Pn Из переменной %n выделяется только имя файла %~Nn Из переменной %n выделяется расширение имени файла %~Xn Значение операторов N и X для переменной %n изменяется так, что %~Sn они работают с кратким именем файла Дата и время создания файла %~Tn Размер файла %~Zn Атрибуты файла %~An %~$PATH:n Проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку.

Переменную PATH можно заменить на любое другое допустимое значение Например, всегда можно узнать, с какого диска был запущен командный файл:

echo %~D0

Комбинируя операторы из таблицы 7, можно получать составные конструкции:

%~DPn — из переменной %n выделяется имя диска и путь, %~NXn — из переменной %n выделяется имя файла и расширение Команда ren %1 %~N1_old%~X1 переименует файл, имя которого передается в качестве параметра, дописав к имени файла _old: file.dat переименуется в file_old.dat.

Взаимодействие пользователя с командных файлов Для взаимодействия пользователя с командным файлом предусмотрен гораздо меньший выбор средств по сравнению с традиционными алгоритмическими языками.

Для того чтобы вручную прервать выполнение запущенного командного файла, необходимо нажать клавиши Ctrl+C или Ctrl+Break. Если надо лишь приостановить работу командного файла до момента нажатия клавиши на клавиатуре, можно воспользоваться командой pause. Хорошим стилем считается выдача предупреждения пользователя о потенциально опасных для данных командах и приостановкой выполнения.

Тогда у пользователя будет возможность продолжить выполнения командного скрипта при нажатии клавиши или его завершения по Ctrl+C / Ctrl+Break:

ECHO Сейчас будут удалены все файлы в d:\work ECHO Для отмены нажмите Ctrl-C PAUSE DEL d:\work\*.*

Для того, чтобы пользователь мог задать значение переменной с клавиатуры используется команда set с ключом /p:

SET /P имя переменной = текст Пользователю будет выведен текст-приглашение и командный файл перейдет в режим ожидания ввода с клавиатуры. Введенная строка заносится в переменную среды.

set /p Folder=Введите имя папки Еще одну интересную возможность – делать выбор одного из альтернативных вариантов, предоставляет команда choice.

Команды передачи управления Последовательное выполнение команд в командном файле можно прервать несколькими способами. Во-первых, можно использовать команду перехода goto метка Эта, табуированная в языках высокого уровня, команда в условиях слабо структурируемых командных файлов используется довольно часто.

Метка, на которую осуществляется переход по этой команде, оформляется следующим образом:

:метка Очевидно, что безусловный переход должен быть обусловлен командой if, иначе не выполнятся команды, помещенные между командой перехода и меткой в случае перехода вперед или произойдет зацикливание при переходе назад. В качестве метки перехода можно указывать строку :eof, которая передает управление в конец текущего пакетного файла:

@ЕСНО OFF REM Если файл был запущен без параметров, выходим из него, REM иначе печатаем первый параметр IF -%1==- GOTO :EOF ECHO %1 Второй способ передачи управления, причем как внутри самого пакетного файла, так и при обращении к другим пакетным файлам – использование команды call.

Для того, чтобы обратиться к внешнему командному файлу достаточно указать его и его параметры в команде call:

call файл пакетные_параметры

Пример:

call test.bat par1 par2 par3 Данный вызов приведет к передаче управления командному файлу test.bat c тремя указанными параметрами.

Альтернативой подобному запуску может стать использование имени стороннего командного файла в качестве имени команды:

test.bat par1 par2 par3 Но при последнем вызове после окончания работы командного файла test.bat управление не будет возвращено в вызывавший командный файл, а, следовательно, не будут выполнены все следующие за командой вызова инструкции.

Вызов же командой call позволяет по окончании работы вызванного командного файла вернуться в вызвавший и продолжить его выполнение.

В качестве адресата вызова команды call допустимо использовать метки внутри текущего командного файла:

CALL :метка аргументы При вызове такой команды создается новый контекст текущего пакетного файла с заданными аргументами и управление передается на инструкцию, расположенную сразу после метки. Для выхода из такого пакетного файла необходимо два раза завершить его работу, достигнув конца командного скрипта или вызвав команду exit /b (ключ /b позволяет завершить работу лишь командного файла, а не сеанса оболочки). При этом первый выход будет означать возврат управления на инструкцию, расположенную сразу после строки call, а второй выход завершает выполнение пакетного файла.

Такое поведение команды call позволяет оформлять фрагменты кода в виде подпрограмм:

call :proc1 par1 par2...

:proc1 rem Здесь %0=:proc1 %1=par1 %2=par2...

exit /b...

Команды перехода Организация ветвлений алгоритмов в зависимости от выполнения или невыполнения того или иного условия является одной из популярнейших структурных конструкций при написании программ на большинстве языков программирования. Не стал исключением и язык командных файлов. Для организации перехода по условию здесь может быть использована команда if. Ниже представлены все возможные варианты вызова этой команды.

if [/i] [not] строка1==строка2 команда [else команда] if [not] errorlevel число команда [else команда] if [not] exist имя_файла команда [else команда] if [/i] строка1 оп_сравнения строка2 команда [else команда] if cmdextversion число команда [else команда] if defined переменная команда [else команда]

Первый вариант операции сравнения позволяет выполнить команду в зависимости от совпадения или несовпадения двух строк (которые могут быть представлены и переменными). Например, так мы можем предотвратить запуск командного файла без параметров:

@echo off if -%1 == - goto :eof … При сравнении с использованием переменных всегда необходимо учитывать возможный вариант отсутствия переменной с указанном имени в текущем контексте командного окна. Например, если командный файл запущен без параметров, то переменная %1 будет не определена, и на этапе выполнения безобидная на первый взгляд конструкция if %1 == /h goto help приведет к ошибке из-за отсутствия левого операнда в операторе сравнения. Поэтому рекомендуется использовать в правой и левой части операции сравнения какой-нибудь дополнительный символ, например '-' (или заключать сравниваемые объекты в кавычки).

Второй вариант команды if опирается на результат выполнения предыдущей команды. Здесь необходимо учесть, что в результате своего выполнения команды Windows выставляют переменную окружения errorlevel в значение кода своего завершения.

Общепринято, что код завершения 0 соответствует успешному завершению команды, а 1 и более – неудачному завершению (например, ничего не найдено командой find, команда ping не получила ответ на запрос, команда del не смогла удалить файл и т.п.) и анализ значения переменной дает возможность выполнить различные действия, например, при успешном или неуспешном выполнении предшествующей команды:

ping www.volpi.ru nul if %errorlevel% 1 ( echo %date% %time% Нет связи с сайтом www.volpi.ru report.txt ipconfig /all report.txt ) Приведенный выше пример иллюстрирует возможность выполнения нескольких команд в случае выполнения (или невыполнения) заданного условия.

Для группировки команд используются круглые скобки.

Если алгоритм работы командного файла предусматривает переход в случае отношений «больше», «меньше», «больше или равно», «меньше или равно», то можно использовать другой синтаксический вариант команды if:

if [/i] строка1 оп_сравнения строка2 команда [else команда] Здесь для сравнения используются трехбуквенные операторы, названия и назначение которых приведены в таблице 8. Ключ /i позволяет игнорировать регистр символов при сравнении.

Таблица 8. Операторы сравнения в команде if Оператор Описание равно EQU не равно NEQ меньше LSS меньше или равно LEQ больше GTR больше или равно GEQ call test.

bat par1 par2 par3 if %errorlevel% GTR 1 ( echo Ошибка выполнения стороннего скрипта exit /b 1) … Отметим также, что сравнение проводится по общему типу данных, так что если обе сравниваемые строки содержат только цифры, то обе строки преобразуются в числа, после чего выполняется сравнение этих чисел.

if %FileSize% LEQ 1000000 (…) else (…) Если в команде if используется конструкция else, то она обязательно должна располагаться в той же строке, что и if.

Поставить выполнение или невыполнение некоторого фрагмента кода в зависимость от существования некоторой переменной может команда:

if defined переменная команда [else команда] Здесь условие defined принимает в качестве аргумента имя переменной среды и возвращает истинное значение, если эта переменная определена:

@ECHO OFF IF not defined FolderName set FolderName=d:\tmp xcopy /y /c *.log %FolderName% Аналогично для проверки существования файла на диске используется команда if [not] exist имя_файла команда [else команда]

Пример использования команды:

if not exist %1 goto NoSuchFile rem Вывод содержимого файла на экран echo Содержимое файла '%1' type %1 goto :EOF :NoSuchFile rem Файл не найден. Выводим сообщение и создаем пустой файл echo Файл '%1' не найден.

copy nul %1

Наконец, последний вариант условной команды:

if cmdextversion число команда [else команда] ставит выполнение команды в зависимость от внутреннего номера версии текущей реализации расширенной обработки команд Номер версии будет увеличиваться на единицу при каждом добавлении существенных возможностей расширенной обработки команд. Таким образом можно адаптировать работу командного файла к возможностям установленной на компьютере командной оболочки.

Если расширенная обработка команд отключена, условие cmdextversion не будет истинно.

Организация циклов в командных файлах Циклическое повторение некоторого фрагмента командного файла можно организовать с использованием пары команд if и goto. Но гораздо эффективнее использовать для этих целей команду for. Команда for обеспечивает выполнение заданной команды (группы команд) для всех элементов некоторого множества (например, для всех файлов в папке).

Обобщенный синтаксис команды for:

for {%переменная|%%переменная} in (множество) do команда [Параметры] Чтобы скопировать содержимое всех файлов, имеющих разрешение.log или.txt в текущем каталоге в один файл all.txt с помощью заменяемой переменной %%f, можно использовать следующую команду:

for %%f in (*.log *.txt) do type %%f all.txt В приведенном примере каждый файл с расширением.log или.txt в текущем каталоге будет подставляться вместо переменной %%f, пока не будут обработаны все файлы с таким расширением. Чтобы использовать данную команду непосредственно в командной строке, а не в командном файле, следует заменить все вхождения %%f на %f. В противном случае переменная игнорируется, и отображается сообщение об ошибке.

В качестве элементов множества перебираемых элементов могут быть представлены любые строки, в этом случае переменная цикла по очереди примет значение каждой из этих строк.

Например, так мы можем создать 5 папок с предопределенными названиями в текущей папке:

for %%f in (help work out bin “my files”) do md %%f Существуют дополнительные синтаксические конструкции использования команды for.

Одна из них реализуется, если указать в команде for ключ /D:

for /D %переменная in (набор) do команда [параметры] Если параметр множество содержит подстановочные знаки (* и ?), команда, указанная в параметре команда, выполняется для каждого каталога, совпадающего с параметром множество.

Скажем, выполнив следующий командный файл:

for /D %%f in (d:\work\h*.*) do attrib +h %%f.

мы установим атрибут «Скрытый» для всех папок, начинающихся с символа h, в папке d:\work.

С помощью ключа /R можно задать рекурсию в команде for:

for /R [[диск:] путь] %переменная in (набор) do [параметры] команда Команда с ключом /R проходит по дереву каталогов с корнем в [диск:]путь, выполняя инструкцию for для каждого каталога в дереве. Если после ключа /R не задан каталог, предполагается текущий каталог. Если параметр множество задано одной точкой (.), то команда просто перечислит каталоги в дереве.

for /R d:\ %%f in (.) do echo %%f

Для формирования списка всех файлов с расширением doc в заданном каталоге и всех его подкаталогах можно использовать следующую команду в пакетном файле:

for /R d:\docs %%f in (*.doc) do echo %%f docfiles.lst Ключ /L позволяет реализовать с помощью команды for арифметический цикл, когда переменная цикла получает ряд целочисленных значений:

for /L {%% | %}переменная in (НачальноеЗначение#, шаг#, КонечноеЗначение#) do команда [Параметры] Цикл выполняет команду для каждого значения переменной цикла. Переменная цикла первоначально принимает значение НачальноеЗначение# и далее на каждом шаге изменяется на величину шаг#. Когда переменная итерации превысит параметр КонечноеЗначение#, командная оболочка покидает цикл. Также можно использовать отрицательный параметр для перемещения в диапазоне убывающих значений. Например, (1,1,4) создает последовательность «1 2 3 4», а (5,-2,1) создает последовательность «5 3 1».

Например, в результате выполнения следующего фрагмента командного файла в файл testconnect.log будет помещен результат проверки доступности компьютеров с адресами в диапазоне 192.168.0.(1-254). Цикл обеспечивает перебор последней цифры адреса.

echo %date% %time%testconnect.log FOR /L %%f IN (1,1,254) DO (ping -n 3 192.168.0.%%f if errorlevel 1 echo Компьютер 192.168.0.%%f не отвечает testconnect.log) Числа, помещаемые в переменную цикла for /L, можно использовать в арифметических вычислениях.

Рассмотрим командный файл my.bat следующего содержания:

@echo off cls set /A Sum=0 for /L %%f in (1,1,5) do set /a Sum=Sum+%%f echo Sum=%Sum% В результате выполнения этого командного файла будет вычислена сумма чисел от 1 до 5 и на экране будет выведен результат в виде:

Sum=15 Использование команды for с ключом /f предоставляет возможности разбора содержимого текстовых файлов.

Обобщенный синтаксис команды в этом случае:

for /F ["ключи"] %переменная in (набор) do команда [параметры] Разбор файлов состоит в чтении вывода, строки или содержимого файла, разбиении его на отдельные строки текста, разбиении каждой строки на составляющие слова по определенным маркерам и выполнении команд(ы) для каждого выделенного слова. По умолчанию /F передает первый отделенный пробелом элемент из каждой строки файлов заданного набора.

Разбор файлов следует использовать для обработки вывода команд, строк и содержимого файла. Переменные итерации позволяют перебирать строки, которые требуется проверить. Параметр ключи используется для изменения порядка разбора.

По умолчанию ключ /F выделяет из каждой строки файла первое слово, очищенное от окружающих его пробелов, причем пустые строки в файле пропускаются. Ключи задаются в виде заключенной в кавычки строки, их перечень и описание приведены в таблице 9.

–  –  –

Ключ EOL позволяет определить символ, наличие которого в начале строки идентифицирует строку как комментарий, исключая ее из разбора.

Ключ SKIP позволяет исключить из разбора несколько начальных строк файла, если по формату они содержат заголовок данных, описательную информацию и др., т.е. информацию, не предназначенную для обработки.

Ключ DELIMS позволяет определить, какие символы будут восприниматься командой for в качестве разделителей логических подстрок-элементов разбора.

Ключ TOKENS задает элементы, передаваемые из каждой строки в тело цикла for при каждой итерации. Для каждого элемента создаются дополнительные имена переменных. Форма m-n задает диапазон, указывающий элементы с mго по n-ый. Если последним символом строки tokens= является звездочка (*), то размещается дополнительная переменная, в которую помещается остаток строки после разбора последнего элемента.

Разберем использование этой команды на примере пакетного файла parser.bat, который производит разбор файла со списком запущенных процессов, полученных командой tasklist:

@ECHO OFF tasklistlist.txt FOR /F "TOKENS=1,3,4-6 SKIP=3" %%i IN (list.txt) DO echo %%i %%l

–  –  –

С помощью команды for осуществляется разбор каждой строки вывода команды и в первом столбце выделяется год создания файла. После этого на экран выводится информация только о тех файлах, которые были созданы после 2011 года. Для ключа TOKENS в последнем примере будут идентичными следующие определения: TOKENS=1,2,3,4; TOKENS=1,2,3-4; TOKENS=1-4.

В последнем примере обращает на себя внимание не встречавшееся ранее обращение к переменным вида !имя_переменной! Такое обращение характерно для работы с переменными в команде цикла или внутри блока команд цикла. Оно связано с внутренними особенностями работы командного интерпретатора с переменными в этих областях кода. Обычное обращение %имя_переменной% приводит к ошибкам и чтобы избежать проблем с инициализацией и работой с переменными в таком контексте необходимо использовать в командном файле директиву SETLOCAL ENABLEDELAYEDEXPANSION, и сами переменные в командах цикла (и условных командах) обрамлять символами ‘!’.

В команде for /f можно также обработать отдельную строку. Для этого следует ввести нужную строку в кавычках вместо набора имен файлов в скобках.

Обработка будет выполнена аналогично каждой отдельной строке файла в предыдущих примерах. Например, файл следующего содержания:

@ECHO OFF for /f " TOKENS=2,3* DELIMS=, " %%i in ("Один, Два Три, Четыре, Пять, Шесть, Семь”) do @ECHO %%i:%%j:%%k выведет:

Два Три: Четыре: Пять, Шесть, Семь Команда for разбирает строку по заданному разделителю (,) и выводит значение второй (%%i), третьей(%%j) строк и хвоста строки (%%k).

Еще одной возможностью оператора for, уже встречавшейся при изучении параметров командных файлов, является расширение переменных цикла до полного пути, расширения, имени файла, его размера и т.п. В таблице 10 еще раз описаны эти расширения для параметра %%i.

Таблица 10. Операторы для переменных команды for Операторы Описание Переменная %i расширяется до полного имени файла %%~Fi Из переменной %i выделяется только имя диска %%~Di Из переменной %i выделяется только путь к файлу %%~Pi Из переменной %i выделяется только имя файла %%~Ni Из переменной %i выделяется расширение имени файла %%~Xi Значение операторов N и X для переменной %i изменяется %%~Si так, что они работают с кратким именем файла Дата и время создания файла %%~Ti Размер файла %%~Zi Атрибуты файла %%~Ai Например, следующий командный файл выведет суммарный размер всех файлов в папке, имя которой передано в качестве параметра.

@ECHO OFF CHCP 1251

SETLOCAL ENABLEDELAYEDEXPANSION

set /a Sum=0 for %%i in (%1\*.*) do set /a Sum=!Sum!+%%~Zi echo Размер файлов в папке %1 - %Sum% Заключение Командные файлы предоставляют администратору достаточно широкие возможности для автоматизации действий по настройке, обслуживанию и мониторингу состояния компьютера под управлением ОС Windows. И хотя на сегодняшний день для решения существуют более мощные и гибкие средства (WSH, PowerShell), о которых речь пойдет на следующих лабораторных, в связи с наличием большого количества практических наработок, а также благодаря относительной простоте, командные файлы по прежнему используются на практике.

2. Порядок выполнения работы

2.1. Ознакомьтесь с теоретическими основами использования команд ОС Windows в текстовом режиме в настоящих указаниях и конспектах лекций.

2.2. Выполните задания 2.2.1-2.2.11.

Все задания необходимо выполнить в текстовом интерфейсе командной строки Windows. Выполнение каждой команды необходимо подтвердить в отчете снимком окна командной оболочки с самой командой и результатом ее выполнения (фрагментом результата при большом объеме). Задания, требующие создания командных файлов, должны сопровождаться исходными текстами скриптов.

2.2.1. Запустите окно командной оболочки Cmd.exe и сделайте текущей корневую папку диска D:

2.2.2. Откройте справочник по командной строке Windows.

2.2.3. Запишите названия как минимум 10 внешних и 10 внутренних команд Windows.

2.2.4. Изучите справку по команде Dir. Используя эту команду выведите на экран список всех скрытых и системных файлов на диске D:

2.2.5. Изучите справку по команде Tasklist. Создайте в папке spo1 на диске D:

текстовый файл, содержащий список процессов, использовавших процессор более 10 минут. Отсортируйте список с использованием команды sort.

2.2.6. Изучите справку по команде Taskkill. Запустите несколько экземпляров стандартного калькулятора Windows. Закройте все калькуляторы одной командой.

2.2.7. Создайте условную команду с использованием операторов && или ||, которая в случае, если запущен хотя бы экземпляр стандартного блокнота Windows, дописывал бы в файл reportNP.txt дату и время обнаружения и закрывал все запущенные блокноты.

2.2.8. Определите собственную переменную среды в сеансе командного окна.

Убедитесь, что эта переменная уничтожается при закрытии окна и недоступна в других командных окнах.

2.2.9. Создайте командный файл, который копирует все файлы с расширением, заданным в качестве первого параметре из папки, заданной вторым параметром в папку, заданную третьим параметром. С помощью команды at реализуйте запуск этого командного файла в заданный момент времени.

Выполните индивидуальное задание в соответствии с заданием. Для 2.2.10 командного файла обеспечьте возможность запуска с ключом /a для вывода информацию о разработчике, а также с ключом /h для вывода справки о командном файле (назначение, перечень ключей или параметров).

1) Подсчитать размер папки вместе с содержимым всех ее подпапок. Имя папки брать как параметр командного файла.

2) Вывести содержимое папки, отсортированное на выбор (с использованием команды choice) по дням, месяцам или годам создания файлов. Имя папки брать как параметр командного файла.

3) Задать в текстовом файле список процессов, запрещенных к запуску. Создать командный файл, завершающий все запущенные процессы из списка.

4) Создать командный файл, который синхронизирует содержимое заданной папки с эталонной папкой. После запуска командного файла в заданной папке должен оказаться тот же набор файлов, что и в эталонной (если файла нет – он копируется из эталонной, если найдется файл, которого нет в эталонной - удаляется). Если файл с некоторым именем есть и в заданной папке и в эталонной

–удалять и перезаписывать его не допускается Имена папок передаются как параметры командного файла

5) Вывести на экран все различия двух папок, имена которых передаются в качестве параметров (отличия искать в размерах, именах и атрибутах файлов).

6) Вывести список всех подпапок в папке, имя которой передается командному файлу в качестве параметра, отсортировав их в порядке возрастания количества находящихся в них файлов (включая подпапки).

7) Создать командный файл, который создает архивы файлов некоторой папки, имя которой задано в качестве параметра, созданных в текущем году. Для файлов каждой недели создавать отдельный архив. У уже помещенных в архив файлов снимать атрибут a с целью предотвращения повторной архивации.

Файлы архивов копировать в отдельную папку, имя которой передается скрипту вторым параметром.

8) Создать командный файл, создающий в системе нового пользователя и помещающего его в группу “Опытные пользователи” и удалив из группы «Пользователи» (использовать команды net user и net localgroup). Имя пользователя и пароль передаются в качестве параметров, если не переданы - вводятся с клавиатуры. Для пользователя создать папку в D:\work с именем Folder_Имя_пользователя, скопировав в нее все файлы из ранее созданной эталонной папки. Для созданной папки пользователя и всех ее файлов определить права доступа Полный доступ для самого пользователя и Нет доступа для всех остальных пользователей (использовать команду cacls).

9) Разложить содержимое папки, имя которой передается в качестве параметра командного файла, по подпапкам в соответствии с расширением файлов

– все *.exe файлы – в папку EXE, *.txt – в TXT и т.д. Создать отдельную папку для файлов без расширения.

10) Для заданной в качестве параметра скрипта папки найти все файлы, размер которых превышает заданный в качестве параметра и предоставить пользователю возможность выбора (команда choice) действий с этими файлами – архивация с удалением или простое удаление.

2.2.11. Представьте отчёт по лабораторной работе преподавателю и отчитайте работу.

2.3. Содержание отчета

Отчет по лабораторной работе должен содержать следующие сведения:

- название и цель работы;

- протокол выполнения лабораторной работы, содержащий команды или тексты командных файлов по каждому пункту заданий, а также результаты их выполнения.

3. Контрольные вопросы

3.1. Что такое командный интерпретатор, где в ОС семейства он находится, какие функции выполняет?

3.2. Чем отличаются внешние и внутренние команды командного интерпретатора?

3.3. В чем смысл операций перенаправления ввода-вывода команд? Приведите самостоятельные примеры использования операторов перенаправления.

3.4. Откуда сеанс командной строки получает переменные среды? Как создаются новые переменные среды, каковы ограничения на их использование? Данные каких типов могут хранить и обрабатывать переменные среды?

3.5. Как параметры запуска командного файла можно использовать в его коде?

Какие существуют ограничения на их использование? Для чего используется расширение параметров командной строки? Приведите самостоятельные примеры.

3.6. Какие критерии сравнения можно использовать в команде условного перехода if? Приведите самостоятельные примеры использования этой команды.

3.7. Как можно реализовать фрагмент кода командного файла, работающий подобно процедуре?

3.8. Какую роль в сеансе командной строки играет переменная errorlevel? Приведите самостоятельные примеры ее использования.

3.9. Поясните роль ключей в команде for /f, приведите самостоятельные примеры их использования.

3.10. Какие средства предоставляет командный интерпретатор Windows для интерактивного взаимодействия с пользователем? Приведите самостоятельные примеры.

4.Литература

1. Б. Книттель. Windows 7. Скрипты, автоматизация и командная строка. СПб.:

Питер, 2012 г., 764с.

2. У.Р. Станек. Командная строка Microsoft Windows. Справочник администратора. СПб.: Русская редакция, 2009 г., 480с.

3. Д.Харалсон. Microsoft Windows Server 2003: администрирование из командной строки. М.: Кудиц-Образ, 2004 г., 576с.

4. А.В. Попов. Командная строка и сценарии Windows. Электронный курс на сайте Интернет-университета информационных технологий, http://www.intuit.ru/department/os/compromtwin.

5. Средства администрирования и создания сценариев. Библиотека MS TechNet. http://technet.microsoft.com/ru-ru/library/cc739502.

6. МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНЫМ РАБОТАМ: Модель безопасности ОС Windows/ Сост. Лясин Д.Н., Саньков С.Г.; Волгоград. гос.

техн. ун-т. - Волгоград, 2011, – 24 с.

–  –  –

План электронных изданий 2012 г. Поз. № Подписано на « Выпуск в свет»..12. Уч-изд. л..

На магнитоносителе.

Волгоградский государственный технический университет.

Похожие работы:

«Ярослав КОШИВ УБИЙСТВО, КОТОРОЕ ИЗМЕНИЛО УКРАИНУ МОСКВА Издательство "ПРАВА ЧЕЛОВЕКА" ББК 76.01 К 76 Издание подготовлено при поддержке National Endowment for Democracy, США Распространяется б...»

«ООО "Строительные Технологии" СПб, 22 Линия, д. 3 корп.1 Типовая технологическая карта на монтаж м еталлических ферм на колонны Типовая технологическая карта (ТТК) Шифр проекта: 1012/65.ТТК Пояснительная записка Исполнено: Соболев А.В Главный инженер проекта Копко В.В Инженер проектировщ...»

«Изв. Сарат. ун-та. Нов. сер. Сер. Математика. Механика. Информатика. 2015. Т. 15, вып. 2 vychisleniy [Theory and practice of parallel compuand System Sciences International, 2013, vol. 52, ting] Moscow, Internet-Un-t Inform. Tekhnologii, no 5, pp. 686–699. DOI: 10.1134/S10642307130 B...»

«ДОЗИРОВАНИЕ МАССАЖА Дозирование массажа – вопрос весьма актуальный. Какие критерии и параметры должен использовать практикующий массажист? Ведь здесь невозможно точно как в аптеке отмерить необходимую дозу лекарственного вещества на электронных весах, а "унив...»

«Вестник КрасГАУ. 20 11. №10 Таким образом, в данном районе необходима разработка и реализация комплексной программы оздоровления окружающей среды, включающей расширение сети мониторинговых наблюдений за состоянием природных сред, масштабного зеленого строительства в пр...»

«МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Сыктывкарский лесной институт (филиал) федерального государственного бюджетного образовательного учреждения высшего профессионального образования "Санкт-Петербургский государственный лесотехнический университет...»

«ФАРМАКОТЕРАПІЯ В ДЕРМАТОВЕНЕРОЛОГІЇ УДК 616.5-001.1-021.6-08 ISSN 1727 5741 Л.А. Болотная Харьковская медицинская академия последипломного образования МЗ Украины Наружное лечение алле...»

«ИСТОЧНИКИ ВТОРИЧНОГО ЭЛЕКТРОПИТАНИЯ РЕЗЕРВИРОВАННЫЕ СКАТ-1200A СКАТ-1200С ЭТИКЕТКА ФИАШ.436234.368 ЭТ Благодарим Вас за выбор нашего источника резервного питания, который обеспечит Вам надежную работу систем сигнализации и связи на Вашем объекте. Настоящая э...»

«Архитектура и градостроительство. Реконструкция и реставрация АРХИТЕКТУРА И ГРАДОСТРОИТЕЛЬСТВО. РЕКОНСТРУКЦИЯ И РЕСТАВРАЦИЯ УДК 72.03 А.А. Панкратова, А.К. Соловьев* ГАУК "Государственный музей-заповедник С.А. Есенина", *ФГБОУ ВПО "МГСУ" ПРОБЛ...»

«ББК 84 А 14 Редакция: Анна Голубкова Дмитрий Виноградов Павел Волов Рисунки Светланы Дорошевой Художественное оформление: Асия Момбекова Техническая поддержка: Сергей Шук Верстка: Елена Иванова Права на...»

«САНКТ-ПЕТЕРБУРГСКИЙ ЮРИДИЧЕСКИЙ ИНСТИТУТ ГЕНЕРАЛЬНОЙ ПРОКУРАТУРЫ РОССИЙСКОЙ ФЕДЕРАЦИИ И. Н. ЕВСЮНИН ИСПОЛЬЗОВАНИЕ НАУЧНО-ТЕХНИЧЕСКИХ СРЕДСТВ ПРИ РАССЛЕДОВАНИИ ПРЕСТУПЛЕНИЙ, СОВЕРШЕННЫХ С ПРИМЕНЕНИЕМ ВЗРЫВЧАТЫХ ВЕЩЕСТВ И ВЗРЫВНЫХ УСТРОЙСТВ Учебное пособие Санкт...»

«The Fourth International conference on development of education and psychological science in Eurasia 20th March, 2016 "East West" Association for Advanced Studies and Higher Education GmbH, Vienna,...»

«Институт Государственного управления, Главный редактор д.э.н., профессор К.А. Кирсанов права и инновационных технологий (ИГУПИТ) тел. для справок: +7 (925) 853-04-57 (с 1100 – до 1800) Интернет-журнал "НАУКОВЕДЕНИЕ" №5 2013 Опубликовать статью в журнале http://publ.naukovedenie.ru Серпокрылов Николай Сергеевич...»

«Vdecko vydavatelsk centrum "Sociosfra-CZ" Russian-Armenian (Slavic) State University Tashkent State Pedagogical University named after Nizami Shadrinsk State Pedagogical Institute Penza State Technological University Branch of the Military Academy of Communications in Krasnodar PROBLEMS OF MODERN...»

«ГОСУДАРСТВЕННЫЙ КОМИТЕТ СССР ПО ОБЕСПЕЧЕНИЮ НЕФТЕПРОДУКТАМИ Утверждены Госкомнефтепродуктом СССР 26 декабря 1986г. ПРАВИЛА ТЕХНИЧЕСКОЙ ЭКСПЛУАТАЦИИ РЕЗЕРВУАРОВ И ИНСТРУКЦИИ ПО ИХ РЕМОНТУ Москва "...»

«Российская академия наук Некоммерческое партнерство Научный совет по проблемам "НАУЧНО-ТЕХНИЧЕСКИЙ СОВЕТ надежности и безопасности Единой энергетической системы" больших систем энергетики УТВЕРЖДАЮ Председатель Научного Совета РАН по проблемам надёжности и безопасн...»

«ИНСТРУКЦИИ 1 (24) ПО ОБРАЩЕНИЮ И ЭКСПЛУАТАЦИИ Высоковольтные силовые кабели 52145 кВ НИОКР, Техническое обслуживание 01.10.2010 потребителей ИНСТРУКЦИИ ПО ПРОКЛАДКЕ И ЭКСПЛУАТАЦИИ высоковольтных кабелей DRYREX напряжением 52.145 кВ Содержание Область применения Общая информация...»

«УДК 313 ПРОБЛЕМА БРАКА И СЕМЬИ М.Ш. Файзуллоева, кандидат исторических наук Горно-Металлургический Институт Таджикистана (Чкаловск), Таджикистан Аннотация. В статье говорится об актуальности брачно-семейных отношений в Республике Таджикистан, т...»

«Виды технического контроля качества продукции Нарушение требований, предъявленных к качеству изготовляемой продукции, приводит к увеличению издержек производства и потребления. Поэтому своев...»

«ООО Юниконт СПб Блок сигнализации AU-206 Руководство по эксплуатации (206-2-08082012) г. Санкт-Петербург ООО Юниконт СПб Руководство по эксплуатации AU-206 Содержание 1.  ОБЩИЕ СВЕДЕНИЯ. 2.  КОМПЛЕКТНОСТЬ ИЗДЕЛИЯ 3.  ТЕХНИЧЕСКИЕ ХАРАКТЕР...»

«НАДЕЖНОСТЬ ТЕХНОЛОГИЧЕСКОГО ОБОРУДОВАНИЯ Издательство ТГТУ Министерство образования и науки Российской Федерации Государственное образовательное учреждение высшего профессионального образования "Тамбовский государственный технический университет" НАДЕЖНОСТЬ ТЕХНОЛОГИЧЕСКОГО ОБОРУДОВАНИЯ Лабораторные работы для студентов 4 – 5 курсов спец...»










 
2017 www.lib.knigi-x.ru - «Бесплатная электронная библиотека - электронные материалы»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.