.foreach
.foreach 关键字分析一个或多个命令的输出并将该输出中每一个值作为另一个或多个命令的输入。
语法
.foreach [Options] ( Variable { InCommands } ) { OutCommands }
.foreach [Options] /s ( Variable "InString" ) { OutCommands }
.foreach [Options] /f ( Variable "InFile" ) { OutCommands }
语法项
- Options
- 可以是下面选项的任意组合:
- /pS InitialSkipNumber
- 使得开头的一些符号被跳过。InitialSkipNumber 指定不传递给OutCommands
的输出关键字的数量。
- /ps SkipNumber
- 每次执行命令时都会跳过一些符号。每次将符号传递给OutCommands 之后,SkipNumber
个数的符号都会被忽略。
- Variable
- 指定一个变量名。该变量用来保存InCommands 字符串中的每次输出,因此传递给OutCommands
的参数中可以通过名字引用Variable 。可以使用任何字母数字的字符串,但是并不建议使用可以当作有效的16进制数字或调试器命令的字符串。如果Variable
使用的名字碰巧和已存在的全局变量、局部变量或别名相同,它们的值不会受.foreach 命令的影响。
- InCommands
- 指定要解析输出的一个或多个命令;结果会传递给OutCommands 。InCommands 的输出不会显示出来。
- InString
- 和/s 一起使用。指定一个要解析的字符串;结果会传递给OutCommands。
- InFile
- 和/f 一起使用。指定要解析的文本文件;结果会传递给OutCommands 。文件名InFile
必须用引号括起来。
- OutCommands
- 指定每条标记(token)要执行的一个或多个命令。任何时候Variable 都会被替换为当前标记。
注意 当Variable出现在OutCommands
中时,必须前后带有空格。如果有其它任何文本相邻 — 即使是一个圆括号 — 就不会被当前标记替换,除非使用${ } (Alias Interpreter)关键字。
注释
当InCommands 的输出、InString 字符串或InFile
被解析时,任何数量的空格、tab符或回车都将会被当作单个分隔符。文本被分隔成的小片段被用来替换OutCommands 中的Variable
。
这里有一个使用.foreach 语句的示例,对文件myfile.txt 中找到的每条标记都会使用dds
命令:
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 关键字的更多示例,查看调试器命令程序示例。
附加信息
需要其它流程控制符的信息以及它们在调试器命令程序中的用法,请看使用调试器命令程序。
Build machine: CAPEBUILD