Составители:
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
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »