Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab1-04.doc
Скачиваний:
43
Добавлен:
12.05.2015
Размер:
260.1 Кб
Скачать

4.3.10. Команда sort

Команда sortсортирует поступающие на ее вход данные и имеет следующий синтаксис:

sort[/r] [/+индекс] [/mкилобайты] [/lязык][/recсимволы]

[[диск1:][путь1]имя-файла1] [/t[диск2:][путь2]]

[/o [диск3:][путь3]имя-файла3]

Параметр [диск1:][путь1]имя-файла1задает сортируемый файл. Если этот параметр не задан, сортируется стандартный ввод.

Параметр [/t[диск2:][путь2]] задает каталог для хранения рабочих данных командыsort, если сортируемые данные не помещаются в основной памяти (по умолчанию используется системный временный каталог).

Параметр /o [диск3:][путь3]имя-файла3задает файл для хранения отсортированного ввода (если параметр не указан, данные будут записываться в стандартный вывод).

Для команды sortопределены следующие опции:

  • /r– изменяет порядок сортировки по уменьшению, т.е. от Z к A, затем от 9 к 0;

  • /+индекс– задает номер позиции символаиндекс, начиная с которой будет выполняться сравнение (по умолчанию сравнение начинается с первого символа в строке, т.е. значениеиндексапо умолчанию равно 1);

  • /mкилобайты– задает количество основной памяти, используемой для сортировки (в килобайтах);

  • /lязык– переопределяет порядок сортировки символов, задаваемый языком, который используется системой по умолчанию, т. е. языком и страной/регионом, выбранными при установке (в настоящее время единственно допустимое значение параметраязыкC, когда сортировка символов производится по их двоичной кодировке);

  • /recсимволы– задает максимальное числа символов в записи (или строке) входного файла (значение по умолчанию равно 4096, максимальное значение — 65535).

При сортировке регистр букв не учитывается, т.е. строчные и заглавные буквы, например, Аиа, считаются одинаковыми символами.

4.3.11. Команда for

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

Команда имеет следующий синтаксис:

for переменная in (множество) do команда

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

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

Команда это отдельная команда или последовательность команд. Последовательность команд должна быть задана, как это описано в 2.1.14.3.

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

Следует отметить, что все компоненты команды for, включая команды после оператора do, должны задаваться в одной строке.

Первая расширенная форма команды for:

for /D переменная in (множество) do команда

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

Вторая расширенная форма команды:

for /R [[диск:]путь] переменная in (множество) do команда

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

Третья расширенная форма команды for:

for /L переменная in (начальное-значение, шаг, конечное-значение)

do команда

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

Последняя расширенная форма команды for может быть задана в одном из трех вариантов:

for /F ["параметры-разбора"] переменная in (множество) do команда

for /F ["параметры-разбора"] переменная in ("строка") do команда

for /F ["параметры-разбора"] переменная in ('команда') do команда

Эти варианты расширения разбивают текст файла в параметре множество, либо строку в параметре "строка", либо вывод команды в параметре 'команда' на отдельные смысловые элементы – лексемы. Разделителями между лексемами являются один или несколько символов-ограничителей. Параметры-разбора содержат список параметров, отделенных друг от друга пробелом или пробелами.

Лексемы образуют последовательность. С каждым из элементов этой последовательности можно связать свой индекс. Первый индекс, например, %%I задается как значения переменной в команде for. Остальные лексемы будут доступны с индексами %%J (вторая лексема), %%K (третья лексема) и т.д. По умолчанию для анализа доступна только первая лексема. Чтобы сделать остальные лексемы доступными для анализа, необходимо в параметрах-разбора задать ключевой параметр

tokens=список

Список задает номера лексем, доступные для анализа, либо в виде списка номеров лексем, отделенных друг от друга запятыми (например, 1,2,3), либо в виде диапазона значений (например, 1-4). Если в конце списка задан символ "*", то создается дополнительная переменная, Значением которой будут все оставшиеся лексемы. Например, если задан параметр

tokens=1,2*,

то в качестве значения переменной %%I будет доступна первая лексема, в качестве значения переменной %%J – вторая лексема и в качестве значения переменной %%K – третья и последующая лексема.

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

delims=символы

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

delims=,;.

Если необходимо задать в качестве символа-разделителя пробел, параметр должен быть последним в списке параметров-разбора, а символ пробела – последним в списке символов-разделителей, например:

"tokens=1,2* delims=,;. ".

Ключевой параметр

skip=число

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

eol=символ

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

Последний параметр в списке параметров-разбора:

usebackq,

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

for /F ["usebackq параметры-разбора"] переменная

in ("множество") do команда

for /F ["usebackq параметры-разбора"] переменная

in ('строка') do команда

for /F ["usebackq параметры-разбора"] переменная

in (`команда`) do команда

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]