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

UptoLike

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

24
ные имена переменных. Форма m-n задает диапазон, указывающий элементы с m-
го по n-ый. Если последним символом строки tokens= является звездочка (*), то
размещается дополнительная переменная, в которую помещается остаток строки
после разбора последнего элемента.
Разберем использование этой команды на примере пакетного файла par-
ser.bat, который производит разбор файла со списком запущенных процессов, по-
лученных командой tasklist:
@ECHO OFF
tasklist>list.txt
FOR /F "TOKENS=1,3,4-6 SKIP=3" %%i IN (list.txt) DO echo %%i %%l
При выводе информации о запущенных процессах учитываем, что команда
tasklist без параметров выводит информацию в виде:
Имя образа PID Имя сессии сеанса Память
========================= ====== ================ ======== ============
System 4 Console 0 248 КБ
smss.exe 1624 Console 0 436 КБ
csrss.exe 1688 Console 0 2 540 КБ
winlogon.exe 1792 Console 0 6 748 КБ
services.exe 1844 Console 0 3 832 КБ
lsass.exe 1856 Console 0 7 076 КБ
svchost.exe 196 Console 0 5 828 КБ
svchost.exe 268 Console 0 5 224 КБ
svchost.exe 1084 Console 0 25 668 КБ
svchost.exe 1252 Console 0 4 876 КБ
svchost.exe 1472 Console 0 6 744 КБ
Заносим этот список в файл list.txt, а затем обрабатываем его построчно.
Для каждой строки, кроме первых 3 (skip=3), выделяем 5 строк. В %%i заносятся
имена процессов, %%j имя сессии, %%k, %%l, %%m данные из 3 осталь-
ных столбцов (сразу отмечаем, что допускается всего 26 переменных для разбора
по числу символов в латинском алфавите). В рассмотренном примере просто вы-
водим на экран имена процессов и объем используемой ими памяти.
Результат вывода команды tasklist необязательно предварительно заносить
в файл. В скобках, задающих обрабатываемый набор строк, можно в апострофах
непосредственно указать команду, вывод которой будет разбирать команда for.
Еще один пример:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
CLS
FOR /F "TOKENS=1,2,3,4 SKIP=5" %%i IN ('dir /a:-d') DO (
set dat=%%i
set year=!dat:~6,4!
if !year! gtr 2011 echo %%i %%j %%l
)
В этом примере осуществляется разбор команды dir, выводящей на экран
информацию о файлах из текущей директории. Формат вывода команды dir:
Том в устройстве D имеет метку DATAD
Серийный номер тома: CCE5-4ACE
Содержимое папки D:\tmp
17.08.2012 17:52 226 1.bat
16.07.2012 15:39 0 1.txt
17.05.2012 11:47 24 951 all.txt
15.08.2012 16:23 39 arc.bat
ные имена переменных. Форма m-n задает диапазон, указывающий элементы с m-
го по n-ый. Если последним символом строки tokens= является звездочка (*), то
размещается дополнительная переменная, в которую помещается остаток строки
после разбора последнего элемента.
        Разберем использование этой команды на примере пакетного файла par-
ser.bat, который производит разбор файла со списком запущенных процессов, по-
лученных командой tasklist:
       @ECHO OFF
       tasklist>list.txt
       FOR /F "TOKENS=1,3,4-6 SKIP=3" %%i IN (list.txt) DO echo %%i %%l

       При выводе информации о запущенных процессах учитываем, что команда
tasklist без параметров выводит информацию в виде:
      Имя образа                   PID Имя сессии       № сеанса       Память
      ========================= ====== ================ ======== ============
      System                         4 Console                 0       248 КБ
      smss.exe                    1624 Console                 0       436 КБ
      csrss.exe                   1688 Console                 0     2 540 КБ
      winlogon.exe                1792 Console                 0     6 748 КБ
      services.exe                1844 Console                 0     3 832 КБ
      lsass.exe                   1856 Console                 0     7 076 КБ
      svchost.exe                  196 Console                 0     5 828 КБ
      svchost.exe                  268 Console                 0     5 224 КБ
      svchost.exe                 1084 Console                 0    25 668 КБ
      svchost.exe                 1252 Console                 0     4 876 КБ
      svchost.exe                 1472 Console                 0     6 744 КБ
      …
      Заносим этот список в файл list.txt, а затем обрабатываем его построчно.
Для каждой строки, кроме первых 3 (skip=3), выделяем 5 строк. В %%i заносятся
имена процессов, %%j – имя сессии, %%k, %%l, %%m – данные из 3 осталь-
ных столбцов (сразу отмечаем, что допускается всего 26 переменных для разбора
по числу символов в латинском алфавите). В рассмотренном примере просто вы-
водим на экран имена процессов и объем используемой ими памяти.
      Результат вывода команды tasklist необязательно предварительно заносить
в файл. В скобках, задающих обрабатываемый набор строк, можно в апострофах
непосредственно указать команду, вывод которой будет разбирать команда for.
Еще один пример:
       @ECHO OFF
       SETLOCAL ENABLEDELAYEDEXPANSION
       CLS
       FOR /F "TOKENS=1,2,3,4 SKIP=5" %%i IN ('dir /a:-d') DO (
       set dat=%%i
       set year=!dat:~6,4!
       if !year! gtr 2011 echo %%i %%j %%l
       )
      В этом примере осуществляется разбор команды dir, выводящей на экран
информацию о файлах из текущей директории. Формат вывода команды dir:
      Том в устройстве D имеет метку DATAD
      Серийный номер тома: CCE5-4ACE

       Содержимое папки D:\tmp

      17.08.2012   17:52   226          1.bat
      16.07.2012   15:39   0            1.txt
      17.05.2012   11:47   24 951       all.txt
      15.08.2012   16:23   39           arc.bat

                                                   24