Windows build number: Microsoft Windows [Version 10.0.18363.657]
Windows Terminal Version: 0.9.433.0
在PowerShell中运行此命令:
wt `
new-tab -p PowerShell` Core`;`
split-pane -H -p Windows` PowerShell `;`
split-pane -p cmd
我应该将新标签分两次(三个窗格)
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
和
[error 0x80070002 when launching `
split-pane -H -p "Windows PowerShell"']
我最终发现,如果我在每个;
之后添加一个空格,那么它将起作用(#4618除外):
wt `
new-tab -p PowerShell` Core`; `
split-pane -H -p Windows` PowerShell `; `
split-pane -p cmd
@杰库
在#4724的测试中,我尝试将回车符和换行符添加到令牌分隔符以进行命令行解析。 但是,当我尝试运行您的示例时,事实证明,除非在前面加上空格,否则反斜线永远不会逸出新行。 无论您尝试调用哪个应用程序,都可以。 直接位于反勾前面的任何其他字符(不仅是分号)都不会触发在PowerShell控制台中转义新行。 你可否确认? 我想这是一个PowerShell问题。
如果从CMD shell(使用^
转义换行符)中运行示例,即使在终端源代码中没有使用\ r和\ n作为标记分隔符,该示例也已经可以使用。
wt ^
new-tab -p "PowerShell Core";^
split-pane -H -p Windows` PowerShell ;^
split-pane -p cmd
是的,实际上,当我从原始问题运行示例但在换行符转引号前面放置空格时,我得到以下信息:
看起来像Powershell如何处理转义的换行符。
你是绝对正确的。 对不起,我想拿出一个纯PowerShell语法示例(或使用echoargs.exe),以便我可以确定发生了什么,并且在提出问题之前没有这样做。 如果这将有助于与其他像我这样的PowerShell用户进行讨论-他们忘记了PowerShell会_implied_字符串-这是PowerShell做错事情的一个简单示例:
注意:Write-Host接受任意数量的字符串参数
当然,如果您将类似的奇怪字符串传递给“本机”命令,PowerShell会将其用引号引起来:
基本上,这是什么情况:
当我们在`;
(我们已经转义,所以只是一个字符串)和换行符之间不留空格时,PowerShell必须假定它是字符串的一部分,而不是单独的行-继续标记。 我们可以通过将其与字符串_implicitly_隔开一个空格(就像我在上面的“变通方法”中所做的那样),或者通过在字符串两边加上引号来避免这种情况:
wt `
new-tab -p "PowerShell Core" ";"`
split-pane -H -p "Windows PowerShell" ";"`
split-pane -p cmd