.Foreach

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание Когда строка Variable отображается в 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 см. в разделе Примеры командной программы отладчика.