Поделиться через


.foreach

Маркер foreach анализирует выходные данные одной или нескольких команд отладчика и использует каждое значение в этом выходных данных в качестве входных данных для одной или нескольких дополнительных команд.

.foreach [Options] ( Variable  { InCommands } ) { OutCommands } 

.foreach [Options] /s ( Variable  "InString" ) { OutCommands } 

.foreach [Options] /f ( Variable  "InFile" ) { OutCommands } 

Элементы синтаксиса

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

/pS InitialSkipNumber
Приводит к пропуску некоторых начальных маркеров. InitialSkipNumber указывает количество выходных маркеров, которые не будут переданы указанным OutCommands.

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

Переменная
Задает имя переменной. Эта переменная будет использоваться для хранения выходных данных каждой команды в строке InCommands; можно ссылаться на переменную по имени в параметрах, передаваемых в OutCommands. Любую буквенно-цифровые строки можно использовать, хотя и с помощью строки, которая также может передаваться для допустимого шестнадцатеричного числа или команды отладчика, не рекомендуется. Если имя, используемое для переменной , совпадает с существующей глобальной переменной, локальной переменной или псевдонимом, их значения не будут затронуты командой foreach .

InCommands
Задает одну или несколько команд, выходные данные которых будут проанализированы; Результирующий маркер будет передан в OutCommands. Выходные данные из InCommands не отображаются.

InString
Используется с /s. Указывает строку, которая будет проанализирована; Результирующий маркер будет передан в OutCommands.

InFile
Используется с /f. Указывает текстовый файл, который будет проанализирован; Результирующий маркер будет передан в OutCommands. Имя файла InFile должно быть заключено в кавычки.

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

Примечание. Если строковая переменная отображается в OutCommands, она должна быть окружена пробелами. Если он находится рядом с любым другим текстом - даже скобками - он не будет заменен текущим значением токена, если только вы не используете токен ${ } (псевдоним интерпретатора).

Дополнительная информация

Сведения о других маркерах потока управления и их использовании в программах команд отладчика см. в разделе "Использование программ команд отладчика".

Замечания

Если выходные данные из InCommands, строка InString или файл InFile анализируются, любое количество пробелов, вкладок или возвращаемых каретки обрабатывается как один разделитель. Каждый из результирующего фрагмента текста используется для замены переменной при отображении в OutCommands.

Ниже приведен пример инструкции foreach, которая использует команду dds для каждого токена, найденного в файле myfile.txt:

0:000> .foreach /f ( place "g:\myfile.txt") { dds place } 

Флаги /pS и /ps можно использовать для передачи только определенных маркеров указанным OutCommands. Например, следующая инструкция пропускает первые два маркера в файле myfile.txt, а затем передает третий в dds. После каждого переданного маркера будет пропускаться четыре маркера. Результатом является то, что dds будут использоваться с 3-м, 8-м, 13-м, 18-м и 23-м маркерами и т. д.

0:000> .foreach /pS 2 /ps 4 /f ( place "g:\myfile.txt") { dds place } 

Дополнительные примеры использования маркера foreach см . в примерах программы команд отладчика.