Задание 2. Команды Rem, Echo




Кафедра Математики и информатики

 

МЕТОДИЧЕСКИЕ Указания

к выполнению индивидуальных заданий по дисциплине

«Операционные системы»

 

Автор-разработчик:

Курбацкий В.Н

vkurbatsky@mfmesi.ru

 

Минск 2016


 

Цель выполнения индивидуальныхзаданий: изучение архитектуры и сервисов операционных систем.

Список содержит вариантызаданий. Номер варианта заданий определяется по порядковому номеру студента в списке.

ФИО Номер задания
Волосач Валентин Вадимович  
Горбачёва Екатерина Игоревна  
Гресь Виктор Владимирович  
Гриб Антон Александрович  
Дашко Анна Георгиевна  
Демидович Алексей Витальевич  
Дрило Дарья Дмитриевна  
Жабулевская Анастасия Сергеевна  
Жуковский Александр Анатольевич  
Закаблук Александр Андреевич  
Казакевич Андрей Валерьевич  
Клепец Антон Анатольевич  
Климчук Илья Игоревич  
Ларин Павел Валерьянович  
Литвин Владислав Андреевич  
Осипенко Денис Андреевич  
Пешко Василий Васильевич  
Русак Антон Александрович  
Русак Роман Игоревич  
Рухля Виктор Александрович  
Сидорович Евгений Викторович  
Солодуха Ксения Владимировна  
Тужиков Игорь Михайлович  
Ходяков Никита Павлович  

Содержание отчета по лабораторной работе

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

1. титульный лист;

2. описание и цель работы;

3. заполненные таблицы учебных заданий лабораторной работы;

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

5. выводы о проделанной работе.

Лабораторную работуразместить в рабочей области дисциплины в СДО «Виртуальный Кампус» до начала сессии.

.


 

Лабораторная работа. Организация пакетных файлов и сценариев в ОС Windows XP

Введение

Пакетный файлэто неформатированный текстовый файл ASCII, содержащий одну или несколько команд ОС.

Имена пакетных файлов имеют расширения. cmd или. bat. ОС при работе с пакетным файлом последовательно обрабатывает его команды после ввода его имени в строке командной оболочки или запуска из другой программы.

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

Пакетные файлы и сценарии часто называют командными файлами, содержащими любые команды. Некоторые команды, такие как For, Goto и If, позволяют выполнять обработку условий в пакетных файлах. Другие команды позволяют управлять вводом и выводом, а также запускать другие пакетные файлы.

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

Поведение среды командной оболочки или всей ОС задают с помощью двух типов переменных среды: системных и локальных.

· Системные переменные определяют поведение глобальной среды ОС.

· Локальные переменные определяют поведение среды в конкретном экземпляре командного интерпретатора Cmd.exe.

Системные переменные среды задаются заранее в ОС Windows XP и доступны для всех ее процессов. Только пользователи с привилегиями администратора могут изменять эти переменные.

Локальные переменные среды доступны в случае, когда пользователь, для которого они были созданы, входит в систему. В частности, локальные переменные реестра HKEY_CURRENT_USER подходят только для текущего пользователя, но определяют поведение глобальной среды ОС.

В следующем списке представлены различные типы переменных в порядке убывания их приоритета:

1. встроенные системные переменные,

2. системные переменные реестра HKEY_LOCAL_MACHINE,

3. локальные переменные реестра HKEY_CURRENT_USER,

4. все переменные среды и пути, указанные файле Autoexec.bat,

5. все переменные среды и пути, указанные в сценарии входа в систему, если он имеется,

6. переменные, используемые интерактивно в пакетном файле или сценарии.

Чтобы иметь возможность подставить значение в переменную среды из командной строки или в пакетном файле (сценарии), следует заключить имя соответствующей переменной (Приложени. 1) в символы процентов (%), например SetMyPath=%CD%. Символы процентов указывают на то, что командный интерпретатор должен обратиться к значению переменной без посимвольного ее разложения и сравнения.

Командный интерпретатор Cmd.exe может оперировать переменными с %0 по %9. При использовании пакетных параметров переменная %0 заменяется именем пакетного файла, а переменные с %1 по %9 — на соответствующие аргументы командной строки. Для доступа к переменным больше %9 еобходимо воспользоваться командой Shift. Параметр %* ссылается на все аргументы, которые передаются пакетному файлу, за исключением %0.

В качестве примера, рассмотрим копирование содержимого из каталога 1 (Folder1) в каталог 2 (Folder2), где параметр %1 заменяется значением Folder1, а параметр %2 соответственно значением Folder2. В пакетном файле Mybatch.bat следует ввести следующую строку:

Xcopy %1 \*.* %2

Используйте пакетный файл Mybatch.bat следующим образом:

Mybatch.bat C:\folder1 D:\folder2

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

Xcopy C:\folder1 \*.* D:\folder2 \

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

Синтаксис модификатора: %~ xy, где x — символьное сокращение действия, определяемое модификатором, y — идентификатор переменной (в диапазоне от 1до 9).

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

Таблица 1. Модификаторы и выполняемые ими действия

№ п.п. Модификатор Описание
  %~1 расширение %1 и удаление любых кавычек (" ")
  %~f1 замена %1 полным путем
  %~d1 замена %1 именем диска
  %~p1 замена %1 путем
  %~n1 замена %1 именем файла
  %~x1 замена %1 расширением имени файла
  %~s1 замена путем, содержащим только короткие имена
  %~a1 Замена %1 атрибутами файла
  %~t1 замена %1 датой и временем модификации файла
  %~z1 замена %1 размером файла
  %~$PATH:1 поиск в каталогах, перечисленных в переменной среды PATH, замена %1 полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку.

Таблица 2. Комбинации модификаторов и квалификаторов

№ п.п. Модификатор Описание
  %~dp1 замена %1 именем диска и путем
    %~nx1 замена %1 именем файла и расширением
  %~dp$PATH:1 поиск в каталогах, перечисленных в переменной среды PATH, и замена %1 именем диска и путем к первому найденному файлу.
  %~ftza1 замена %1 строкой, аналогичной результату работы команды Dir

Еще один модификатор, являющийся уникальным, имеет вид %*. Он представляет все аргументы, переданные пакетному файлу. Этот модификатор не используется в комбинации с модификатором %~.

Конвейеры команд и «каналы» являются инструментами для расширения функционала пакетных файлов и сценариев при их построении и организации.

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

Сервер сценариев

· служит контроллером средств обработки сценариев в ОС Windows XP;

· не требует много памяти;

· является идеальным средством, как для интерактивных, так и для пакетных сценариев.

Существуют две версии сервера сценариев, доступных в окне командной оболочки:

· Wscript.exe — позволяет задавать параметры выполнения сценариев в окне свойств;

· Cscript.exe — позволяет задавать параметры выполнения сценариев с помощью ключей командной строки.

Для разработки сценариев ОС Windows XP следует использовать редакторы сценариев JScript или VBScript (в составе Visual Basic Scripting Edition). При запуске сценария из командной строки, сервер сценария читает и передает содержимое указанного файла зарегистрированному обработчику сценариев. Для определения языка сценария используется расширение имени файла (. vbs для VBScript,. js для JScript). Благодаря этому, разработчик сценария не обязан знать точные программные идентификаторы (ProgID) различных обработчиков сценариев. Сопоставление расширения имени файла сценария с программным идентификатором и запуск конкретного обработчика сценариев осуществляется непосредственно сервером сценариев ОС Windows XP.

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

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

Помимо рассмотренных команд, которые могут быть использованы при организации пакетного файла, существует ряд дополнительных, функционал которых напоминает операторы языков программирования высокого уровня. Кихчислуотносятся: At, Call, Doskey, Echo, Endlocal, For, Goto, If, Pause, Rem, Set, Setlocal и Shift.

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

Лабораторная работа выполняется в среде ОС Windows.


Задание 1. Команда Set

Команда Set предназначена для отображения и установки переменных среды в ОС Windows XP.

Синтаксис команды Set:

Set [ переменная =[ строка ]],

где параметр:

переменная — задает имя переменной, значение которой требуется присвоить или изменить.

строка — задает строковое значение для указанной переменной.

Команда SET поддерживает два дополнительных ключа:

SET /Aвыражение

SET /Pvariable=[promptString]

Ключ /A указывает, что строка справа от знака равенства является числовым выражением, значение которого вычисляется. Обработчик выражений очень прост и поддерживает следующие операции, перечисленные в порядке убывания приоритета (Табл. 3).

Таблица 3. Операции обработчика выражений команды Set

  № п.п. Операция Описание
  () группировка
  ! ~ - унарные операторы
  * / % + арифметические операторы
  <<>> двоичный сдвиг
  & двоичное И
  ^ двоичное исключающее ИЛИ
  | двоичное ИЛИ
  = *= /= %= += -= &= ^= |= <<= >>= присвоение
  , разделитель операторов

При использовании любых логических или двоичных операторов необходимо заключить строку выражения в кавычки. Любые нечисловые строки в выражении рассматриваются как имена переменных среды, значения которых преобразуются в числовой вид перед использованием. Если переменная с указанным именем не определена в системе, вместо нее подставляется нулевое значение. Это позволяет выполнять арифметические операции со значениями переменных среды, причем не нужно вводить знаки % для получения значений. Если команда SET /A вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения. Слева от любого оператора присваивания должно стоять имя переменной среды. Числовые значения рассматриваются как десятичные, если перед ними не стоит префикс 0x для шестнадцатеричных чисел, и 0 для восьмеричных чисел. Например, числа 0x12, и 022 обозначают десятичное число 18. Обратите внимание на запись восьмеричных числе: 08 и 09 не являются допустимыми числами, так как в восьмеричной системе исчисления цифры 8 и 9 не используются. Если команда с ключом /a вызывается из командной строки, а не из пакетного файла, она выводит окончательное значение выражения.

Ключ /P позволяет установить значение переменной для входной строки, введенной пользователем. Показывает указанное приглашение promptString перед чтением введенной строки. Приглашение promptString может быть пустым.

Подстановка переменной среды может быть расширена следующим образом:

%PATH:str1=str2%

расширит действие переменной среды PATH, заменяя каждое вхождение "str1" в расширенном результате на "str2". "str2" может быть пустой строкой для эффективного удаления вхождений "str1" из расширенного вывода. "str1" может начинаться со звездочки, и в этом случае это будет соответствовать любому началу расширенного вывода до первого вхождения оставшейся части "str1". Можно также использовать строки расширения.

%PATH:~10,5%

расширит действие переменной среды PATH, затем использует только 5

символов, которые начинаются с 11-го символа (пропустив 10) расширенного

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

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

%PATH:~-10%

извлечет последние 10 символов переменной PATH.

%PATH:~0,-2%

извлечет все символы переменной PATH, за исключением 2-х последних.

Наконец, добавлена поддержка связывания времени выполнения для переменных среды окружения. По умолчанию эта поддержка отключена. Ключ /V командной строки CMD.EXE позволяет включать и выключать ее. Связывание времени выполнения для переменных среды окружения полезно при обходе ограничений раннего связывания, которое происходит при первом чтении текстовой строки, а не при ее выполнении. Следующий пример демонстрирует возникающую проблему при использовании раннего связывания переменных:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "%VAR%" == "after" @echo Тело внутреннего оператора сравнения

)

Данное сообщение не будет выводиться, т.к. %VAR% в ОБОИХ выражениях if подставляется в момент первого использования в первом if, в том числе и в тело первого ветвления if, которое является составным выражением. В if внутри составного выражения в действительности сравниваются значения "before" и "after", что заведомо ложно. Следующийпримердемонстрируетподобнуюошибку:

set LIST=

for %i in (*) do set LIST=%LIST% %i

echo %LIST%

в данном случае список файлов текущей папки никогда не будет построен. Вместо этого, значением переменной LIST будет имя последнего найденного файла. И вновь, это случилось потому, что %LIST% подставляется всего один раз - в момент обработки выражения FOR, когда список еще пуст. Фактически, приведенный фрагмент эквивалентен следующему примеру:

for %i in (*) doset LIST= %i

в котором имя последнего найденного файла сохраняется в переменной LIST.

Связывание времени выполнения для переменных среды окружения происходит при использовании специального символа (восклицательного знака), обозначающего проведение сопоставления во время выполнения. Если включена поддержка связывания времени выполнения, то для достижения ожидаемых результатов приведенные выше фрагменты должны быть изменены следующим образом:

set VAR=before

if "%VAR%" == "before" (

set VAR=after

if "!VAR!" == "after" @echo Тело внутреннего оператора сравнения

)

set LIST=

for %i in (*) do set LIST=!LIST! %i

echo %LIST%

При включенной расширенной обработке команд доступны несколько переменных среды, которые не отображаются в списке, отображаемом при вызове команды SET. Значения этих переменных вычисляются динамически каждый раз при их извлечении. Если пользователь явно задает переменные с одним из этих имен, то это определение перекрывает соответствующее динамическое определение, описанное ниже:

%CD% - раскрывается в строку текущей директории.

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

%TIME% - раскрывается в текущую дату, используя формат команды TIME.

%RANDOM% - раскрывается в случайное десятичное число между 0 и 32767.

%ERRORLEVEL% - раскрывается в текущее значение ERRORLEVEL

%CMDEXTVERSION% - раскрывается в текущее значение версии расширенной обработки команд.

%CMDCMDLINE% - раскрывается в исходную командную строку, которая вызвала командный процессор.

Таблица 4. Динамические значения команды Set

Значение Описание действия
  %Cd% раскрывается в строку текущей директории
  %Date% раскрывается в текущую дату
  %Time% раскрывается в текущее время
%Random% раскрывается в случайное десятичное число в диапазоне от 0 до 32767
%Errorlevel% раскрывается в текущее значение ErrorLevel
%Cmdextversion% раскрывается в текущее значение версии расширенной обработки команд
%Cmdcmdline% раскрывается в исходную командную строку, которая вызвала текущее окно командной оболочки

Содержание задания

1. Отобразите переменные среды двумя способами: из командной оболочки и окна свойств системы (Пуск | Панель управления | Система).

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

3. Проверьте наличие в системе переменной среды, заданной в предыдущем пункте задания.

4. Выведите значение выражения, определенного в соответствии с вариантом задания (табл. 9), в качестве переменной среды Result.

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

При выполнении задания используйте следующие инструкции:

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

· нажмите Enter для ввода,

· изучите полученный результат и сделайте вывод о проделанной работе,

· запишите полученную информацию в отчет, заполнив табл. 5.

Таблица 5. Результаты выполнения команды Set

№ п.п. Команда с ключами Результат и вывод по способу применения команды
     
     
     
     
     

Задание 2. Команды Rem, Echo

Команда Rem добавляет комментарии в пакетных файлах и не выводит комментарии на экран. При обработке пакетной программы строки, начинающиеся с Rem, пропускаются.

Синтаксис команды Rem:

Rem [ текст ],

где параметр:

текст — задает строку символов, используемую в качестве комментария.

Команда Echo выводит на экран сообщения или задание режима вывода на экран.

Синтаксис команды Echo:

Echo [{ on | off }] [ сообщение ],

где параметр:

{ on | off } — включает или отключает режим отображения на экране информации о работе команд.

сообщение — задает текст для вывода на экран.

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

Cls

@ Echooff

Echo.

Rem ****** Эта пакетная программа ******

Rem ***** иллюстрирует возможности *****

Rem *********** команды Echo ***********

Echo.

Echo ******** This batch program ********

Echo *** illustrates possibilities of ***

Echo ********* the Echo command *********

Echo.

Pause

Содержание задания

1. Создайте пакетный файл, воспользовавшись любым текстовым редактором. Имя пакетного файла выберете самостоятельно.

2. Введите в созданный пакетный файл текст, приведенного выше примера.

3. Сохраните текст пакетного файла.

При выполнении задания используйте следующие инструкции:

o воспользовавшись командой Start и указав путь к пакетному файлу,

o запустите его на выполнение, нажав Enter для ввода,

o изучите пример и полученный с его помощью результат, обратив внимание

o на то, что команда Echo с точкой (.) в конце выводит на экран пустую строку, а символ «коммерческое И» (@) перед командой Echo отключает режим отображения команд.

o сделайте соответствующий вывод и запишите его в отчет.


Задание 3. Утилита For

Утилита For командной среды предназначена для выполнения циклических операций для заданного множества операндов.

Синтаксис команды For:

For {% переменная | %% переменная } in (множество) do команда [ ПараметрыКоманднойСтроки ]

где параметр:

% переменная - любые символы, кроме цифр 0–9 используется для выполнения команды из строки в окне командной оболочки;

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

(множество) — обязательный параметр, задающий один или группу файлов, каталогов, диапазон значений или текстовых строк, указывающих на файлы, подлежащие обработке заданной командой. Например, допустимыми являются следующие варианты: (*.doc), (*.doc *.txt *.me), (jan*.doc jan*.rpt feb*.doc feb*.rpt), (ar??1991.* ap??1991.*). Скобки являются обязательными для обозначения множества.

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

ПараметрыКоманднойСтроки — задает параметры командной строки, которые используются с указанной командой.

Если расширения командного интерпретатора разрешены, что делается по умолчанию, то существуют дополнительные формы команды For.

For / D {% переменная | %% переменная } in (множество) do команда [ ПараметрыКоманднойСтроки ]

Если множество содержит подстановочные знаки, команда выполняется для всех подходящих имен каталогов, а не имен файлов.

For /R [[ диск:] путь ] {% | %%} переменная in (множество) do команда [ ПараметрыКоманднойСтроки ]

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

For /L {% | %%} переменная in (НачальноеЗначение #, шаг #, КонечноеЗначение #) do команда [ ПараметрыКоманднойСтроки ]

Множество раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1)

FOR / F ["ключи"] %переменная IN (множество) DO команда [параметры]

FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters]

FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

или, если использован параметр usebackq:

FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters]

FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters]

FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]

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

eol=c - определение символа комментариев в конце строки (допускается задание только одного символа).

skip=n - число пропускаемых при обработке строк в начале файла.

delims=xxx - определение набора разделителей для замены заданных по умолчанию пробела и знака табуляции.

tokens=x,y,m-n - определение номеров подстрок, выделяемых из каждой строки файла и передаваемых для выполнения в тело цикла. При использовании этого ключа создаются дополнительные переменные. Формат m-n представляет собой диапазон подстрок с номерами от m по n. Если последний символ в строке tokens= является звездочкой, создается дополнительная переменная, значением которой будет весь оставшийся текст в строке после обработки последней подстроки.

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

Поясняющийпример:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

Эта команда обрабатывает файл myfile.txt, пропускает все строки, которые начинаются с символа точки с запятой, и передает вторую и третью подстроки из каждой строки в тело цикла, причем подстроки разделяются запятыми и/или пробелами. В теле цикла переменная %i используется для второй подстроки, %j - для третьей, а %k получает все оставшиеся подстроки после третьей.

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

Переменная %i явно описана в инструкции for, а переменные %j и %k описываются неявно с помощью ключа tokens=. Ключ tokens= позволяет извлечь из одной строки файла до 26 подстрок, при этом, не допускается использование переменных больших чем буквы 'z' или 'Z'. Следует помнить, что имена переменных FOR являются глобальными, поэтому одновременно не может быть активно более 52 переменных.

Синтаксис команды FOR /F также позволяет обработать отдельную строку, с указанием параметра filenameset, заключенным в одиночные кавычки. Строка будет обработана как единая строка из входного файла.

Наконец, команда FOR /F позволяет обработать строку вывода другой команды. Для этого следует ввести строку вызова команды в апострофах вместо набора имен файлов в скобках. Строка передается для выполнения обработчику команд CMD.EXE, а вывод этой команды записывается в память и обрабатывается так, как будто строка вывода взята из файла. Например, следующаякоманда:

FOR /F "usebackqdelims==" %i IN (`set`) DO @echo %i

выведет перечень имен всех переменных среды, определенных в настоящее время в системе.

Операции подстановки ссылок на переменные команды FOR также расширены. Допускается применение следующих синтаксических конструкций:

%~I - из переменной %I удаляются обрамляющие кавычки (")

%~fI - переменная %I расширяется до полного имени файла

%~dI - из переменной %I выделяется только имя диска

%~pI - из переменной %I выделяется только путь к файлу

%~nI - из переменной %I выделяется только имя файла

%~xI - из переменной %I выделяется расширение имени файла

%~sI - полученный путь содержит только короткие имена

%~aI - переменная %I расширяется до атрибутов файла

%~tI - переменная %I расширяется до даты /времени файла

%~zI - переменная %I расширяется до размера файла

%~$PATH:I - проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %I заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, то этот модификатор заменяется на пустую строку

При объединении нескольких операторов можно получить следующие результаты:

%~dpI - переменная %I заменяется только на имя диска и путь

%~nxI - переменная %I заменяется только на имя файла и его расширение

%~fsI - переменная %I заменяется только на полный путь с краткими именами

%~dp$PATH:I - проводится поиск по каталогам, заданным в переменной среды PATH, и переменная %I заменяется на имя диска и путь к первому найденному файлу.

%~ftzaI - переменная %I заменяется на строку, выдаваемую командой DIR

В приведенных выше примерах переменные %I и PATH можно заменить на любые другие допустимые значения. В таких синтаксических конструкциях за символами %~ может следовать любое имя переменной цикла FOR.

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

Содержание задания

1. Скопируйте файлы каталога, путь к которому задайте самостоятельно, в точку назначения, заданную путем d:\Temp\. При копировании воспользуйтесь любым методом, изученным ранее.

2. К каждому из файлов, местоположение которых определено путем d:\Temp\, добавьте символ «!» в начале имени, воспользовавшись командой циклической обработки данных.

3. Подсчитать количество каталогов на локальном диске, воспользовавшись командой циклической обработки данных, в процессе выполнения выводя результат в переменную среды, выбранную самостоятельно. Проверьте полученный результат в файловом диспетчере TotalCommander (Файл | Подсчитать занимаемое место), предварительно выделив содержимое локального диска.

4. Модифицируйте пакетный файл, полученный в предыдущем задании, воспользовавшись командой циклической обработки данных таким образом, чтобы в процессе его выполнения отображалось определенное количество раз выражение «********* theForcommand **********».

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

Таблица 6. Результаты выполнения команды For

№ п.п. Команда с ключами Результат и вывод по способу применения команды
     
     
     
     
     



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-04 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: