windbg .shell 将整个脚本传递给 cmd,以“命令行太长”结尾

问题描述 投票:0回答:1

我正在尝试在 Windbg 脚本文件中创建一个文件夹。如果我只打开windbg,我可以使用

.shell -ci "*" mkdir C:\mydir
来完成。但是,如果我在 Windbg 脚本中输入完全相同的命令,则会收到错误
The command line is too long
,并使用 Process Monitor 查看,我发现 Windbg 将整个脚本传递给 cmd.exe,而不仅仅是我的命令。

调试器命令.txt

.echo *** before mkdir ***
.shell -ci "*" mkdir C:\mydir
.echo *** after mkdir ***
$$ many other debugger commands saving stuff to c:\mydir...

命令:

windbg -c '$$>< DebuggerCommands.txt' notepad.exe

结果 - Windbg 打开并显示:

0:000> $$>< DebuggerCommands.txt
*** before mkdir ***
The command line is too long.
.shell: Process exited

0:000>

在 Process Monitor 中,我看到

C:\Windows\system32\cmd.exe /c "mkdir C:\mydir;.echo *** after mkdir ***;$$ many other debugger commands...
等。

windbg
1个回答
0
投票

$$><
命令将所有语句压缩为一行按照指定

代币$$><

压缩为单个命令块:是

这本身并不重要。但是:有些命令不是也不可以用分号终止。

一个示例是

.shell
命令:

.shell 命令之后的整行将被解释为 Windows 命令(即使它包含分号)。

所以:您不能将

.shell
$$><
$><
$$>a<
一起使用。也许
$<
$$<
有效。否则,请尝试为此目的使用 ! 命令查找或实现扩展。

也许 是一个选项。只需在脚本中添加一个 PyKD 命令,然后让 Python 完成剩下的工作。

© www.soinside.com 2019 - 2024. All rights reserved.