Командные файлы операционной системы MS Windows. Лясин Д.Н - 22 стр.

UptoLike

Составители: 

22
Если параметр множество содержит подстановочные знаки (* и ?), коман-
да, указанная в параметре команда, выполняется для каждого каталога, совпа-
дающего с параметром множество. Скажем, выполнив следующий командный
файл:
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
       Если параметр множество содержит подстановочные знаки (* и ?), коман-
да, указанная в параметре команда, выполняется для каждого каталога, совпа-
дающего с параметром множество. Скажем, выполнив следующий командный
файл:
       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

                                           22