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
新しいタブを2回分割する必要があります(3つのペイン)
[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のテストで、コマンドライン解析用のトークンセパレータにキャリッジリターンとラインフィードを追加しようとしました。 しかし、私があなたの例を実行しようとしたとき、スペースが前に付いていない限り、バックティックが新しい行をエスケープすることは思います。
CMDシェル内から例を実行すると(改行は^
を使用してエスケープされます)、ターミナルソースコードにトークン区切り文字として\ rと\ nがなくてもすでに機能します。
wt ^
new-tab -p "PowerShell Core";^
split-pane -H -p Windows` PowerShell ;^
split-pane -p cmd
実際、ええ、元の問題の例を実行したが、改行をエスケープするバックティックの前にスペースを置くと、次のようになります。
PowerShellがエスケープされた改行を処理する方法の問題のように見えます。
あなたは絶対に正しいです。 申し訳ありませんが、私はその構文の純粋なPowerShellの例を考え出す(またはechoargs.exeを使用する)つもりだったので、何が起こっているのかを確実に知ることができました。 私のような他のPowerShellユーザー(PowerShellが文字列を暗黙的に実行することを忘れている)との話し合いに役立つ場合は、PowerShellが間違っていることの簡単な例を次に示します。
注:Write-Hostは任意の数の文字列パラメーターを取ります
そしてもちろん、そのような奇妙な文字列を「ネイティブ」コマンドに渡すと、PowerShellはそれを引用符で囲みます。
基本的に、何が起こるかはこれです:
`;
(エスケープしたので文字列だけです)と改行の間にスペースを残さない場合、PowerShellはそれが文字列の一部であり、別個の行ではないと見なす必要があります-継続マーク。 これを回避するには、文字列から_implicitly_スペースで区切るか(上記の「回避策」で行ったように)、明示的に文字列を引用符で囲みます。
wt `
new-tab -p "PowerShell Core" ";"`
split-pane -H -p "Windows PowerShell" ";"`
split-pane -p cmd