Windows のネイティブ CMD プロセッサでは、 を使用し&
てコマンドを連結し、1 つのコマンドを他のコマンドの直後に実行することができます。A は、&&
最初のコマンドがエラーなしで完了した場合にのみ、2 番目のコマンドを実行します。
|
これは、最初のコマンドの出力をパイプでつなぐのとは異なります。ではありません2 番目のコマンドに送信されると、コマンドは単純に次々に実行され、それぞれの出力が通常の場所に送信されます。
ただし、 PowerShell で&
または を使用しようとするとエラーが発生します。PowerShell で同様の関数を使用できるのでしょうか、それともこの機能は廃止されるのでしょうか?&&
答え1
PowerShell の演算子は、またはセミコロン&
だけです;
。
PowerShell の演算子はステートメント&&
として実行する必要がありますif
。
Command ; if($?) {Command}
例:
tsc ; if($?) {node dist/run.js}
答え2
ほぼ同じように使用できる次の関数を試してみてください。
function aa() {
if($?) {
$command = [string]::join(' ', $args[1..99])
& $args[0] $command
}
}
今&&
では を に置き換えることができます; aa
。これはまだ完璧ではありませんが、はるかに簡潔です。
cls && build
なる
cls; aa build
答え3
更新: Powershell 7でネイティブに実行できるようになりました
Write-Output 'First' && Write-Output 'Second'
第一
第二
しかし、最初のコマンドが失敗した場合(ここで に注意してくださいWrite-Error
):
Write-Error 'Bad' && Write-Output 'Second'
悪い