En el procesador CMD nativo de Windows, puede utilizar &
para encadenar comandos para que uno se ejecute inmediatamente después del otro. A &&
ejecutará el segundo comando solo si el primero se completa sin errores.
Esto es diferente de los comandos de tubería junto con |
el resultado del primer comando.no esenviado al segundo comando, los comandos simplemente se ejecutan uno tras otro y la salida de cada uno se envía a su lugar habitual.
Sin embargo, aparece un error cuando intento usar &
o &&
en PowerShell. ¿Hay funciones similares disponibles en PowerShell o esta característica está en desuso?
Respuesta1
El &
operador en PowerShell es simplemente ;
o Punto y coma.
El &&
operador en PowerShell debe ejecutarse como una if
declaración.
Command ; if($?) {Command}
Ejemplo:
tsc ; if($?) {node dist/run.js}
Respuesta2
Pruebe esta función, que se puede utilizar más o menos de la misma manera:
function aa() {
if($?) {
$command = [string]::join(' ', $args[1..99])
& $args[0] $command
}
}
Ahora &&
se puede reemplazar con ; aa
, que si bien aún no es perfecto, es mucho más conciso.
cls && build
se convierte
cls; aa build
Respuesta3
Actualización: Ahora es posible hacerlo de forma nativa con Powershell 7
Write-Output 'First' && Write-Output 'Second'
Primer
segundo
Pero si el primer comando falla (aquí tenga en cuenta el Write-Error
):
Write-Error 'Bad' && Write-Output 'Second'
Malo