В собственном процессоре CMD Windows вы можете использовать &
для связывания команд вместе, чтобы одна выполнялась сразу после другой. A &&
выполнит вторую команду только в том случае, если первая завершится без ошибок.
Это отличается от объединения команд в один поток с |
выводом первой команды.не являетсяотправляются второй команде, команды просто запускаются одна за другой, и вывод каждой отправляется в обычное место.
Однако я получаю сообщение об ошибке при попытке использовать &
или &&
в 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'
Плохой