$<、$><、$$<、$><$、$a >< (运行脚本文件)

$<$><$<$><$和 $$>a< 命令读取指定脚本文件的内容,并将其内容用作调试器命令输入。

    $<Filename 
    $><Filename 
    $$<Filename 
    $$><Filename 
    $$>a<Filename [arg1 arg2 arg3 ...] 

参数

文件名 指定包含有效调试器命令文本的文件。 文件名必须遵循 Microsoft Windows 文件名约定。 文件名可能包含空格。

argn

指定调试器要传递给脚本的任意数量的字符串参数。 在执行脚本之前,调试器会将脚本文件中 ${$argn} 格式的任何字符串替换为相应的 argn 。 参数不能包含引号或分号。 多个参数必须用空格分隔;如果参数包含空格,则必须用引号引起来。 所有参数均为可选。

环境

说明
模式 用户模式、内核模式
目标 实时、故障转储
平台 全部

注解

$$<$< 标记按字面执行在脚本文件中找到的命令。 但是,使用 $< 可以指定任何文件名,包括包含分号的文件名。 由于 $< 允许在文件名中使用分号,因此不能将 $< 与其他调试器命令连接,因为分号不能同时用作命令分隔符和文件名的一部分。

$$><$>< 标记按字面执行在脚本文件中找到的命令,这意味着它们打开脚本文件,将所有回车符替换为分号,并将生成的文本作为单个命令块执行。 与前面讨论的 $< 一样, $>< 变体允许包含分号的文件名,这意味着不能将 $>< 与其他调试器命令连接。

如果运行的脚本包含调试器命令程序,则 $$><$>< 标记非常有用。 有关这些程序的详细信息,请参阅 使用调试器命令程序

除非文件名中包含分号,否则不需要使用 $<$><

$$>a< 令牌允许调试器将参数传递给脚本。 如果 Filename 包含空格,则必须用引号括起来。 如果提供的参数太多,则忽略多余的参数。 如果提供的参数太少,则 ${$argn} 格式的源文件中 n 大于提供的参数数的任何标记都将保持其文本形式,并且不会替换为任何内容。 可以在此命令后面加上分号和其他命令;存在分号将终止参数列表。

当调试器执行脚本文件时,命令及其输出将显示在 “调试器命令”窗口中。 当到达脚本文件的末尾时,控件将返回给调试器。

下表总结了如何使用这些令牌。

标记 允许包含分号的文件名 允许串联用分号分隔的其他命令 压缩为单个命令块 允许脚本参数

$<

$><

$$<

$$><

$$>a<

$<$><$<$$>< 命令将回显脚本文件中包含的命令并显示这些命令的输出。 $$>a< 命令不会回显脚本文件中的命令,而只显示其输出。

脚本文件可以嵌套。 如果调试器在脚本文件中遇到其中一个标记,则执行将移动到新脚本文件,并在新脚本文件完成后返回到上一位置。 还可以以递归方式调用脚本。

在 WinDbg 中,可以将其他命令文本粘贴到“调试器命令”窗口中。

示例

以下示例演示如何将参数传递给脚本文件,Myfile.txt。 假定该文件包含以下文本:

.echo The first argument is ${$arg1}.
.echo The second argument is ${$arg2}.

然后,可以使用如下所示的命令将参数传递给此文件:

0:000> $$>a<myfile.txt myFirstArg mySecondArg 

此命令的结果为:

The first argument is myFirstArg.
The second argument is mySecondArg.

下面是一个示例,说明在提供错误数量的参数时会发生什么情况。 假定文件 My Script.txt 包含以下文本:

.echo The first argument is ${$arg1}.
.echo The fifth argument is ${$arg5}.
.echo The fourth argument is ${$arg4}.

然后,以下以分号分隔的命令行生成输出:

0:000> $$>a< "c:\binl\my script.txt" "First one" Two "Three More" Four; recx 
The first argument is First one.
The fifth argument is ${$arg5}.
The fourth argument is Four.
ecx=0021f4ac

在前面的示例中,文件名用引号引起来,因为它包含空格,而包含空格的参数也用引号引起来。 尽管脚本似乎需要第五个参数,但分号在第四个参数之后终止 $$>a< 命令。