Im nativen CMD-Prozessor von Windows können Sie &
Befehle aneinanderreihen, sodass einer unmittelbar nach dem anderen ausgeführt wird. A &&
führt den zweiten Befehl nur aus, wenn der erste ohne Fehler abgeschlossen wurde.
Dies unterscheidet sich von der Weiterleitung von Befehlen zusammen mit |
der Ausgabe des ersten Befehlsist nichtan den zweiten Befehl gesendet, werden die Befehle einfach nacheinander ausgeführt und die Ausgabe für jeden wird an den üblichen Ort gesendet.
Allerdings erhalte ich eine Fehlermeldung, wenn ich versuche, &
oder &&
in PowerShell zu verwenden. Gibt es in PowerShell ähnliche Funktionen oder wird diese Funktion nicht mehr unterstützt?
Antwort1
Der &
Operator in PowerShell ist einfach das ;
„oder“ Semikolon.
Der &&
Operator in PowerShell muss als if
Anweisung ausgeführt werden.
Command ; if($?) {Command}
Beispiel:
tsc ; if($?) {node dist/run.js}
Antwort2
Probieren Sie diese Funktion aus, die ungefähr auf die gleiche Weise verwendet werden kann:
function aa() {
if($?) {
$command = [string]::join(' ', $args[1..99])
& $args[0] $command
}
}
Jetzt &&
kann durch ersetzt werden ; aa
, was zwar immer noch nicht perfekt, aber viel prägnanter ist.
cls && build
wird
cls; aa build
Antwort3
Update: Es ist jetzt möglich, dies nativ mit Powershell 7 zu tun
Write-Output 'First' && Write-Output 'Second'
Erste
Sekunde
Wenn jedoch der erste Befehl fehlschlägt (beachten Sie hier das Write-Error
):
Write-Error 'Bad' && Write-Output 'Second'
Schlecht