如何在成功时运行多个命令

时间:2013-02-26 23:48:02

标签: windows powershell

在bash& CMD你可以rm not-exists && ls将多个命令串在一起,每个命令只有在前面的命令成功时才有条件地运行。

在powershell中,您可以执行rm not-exists; ls,但ls将始终运行,即使rm失败也是如此。

如何轻松复制bash& amp;的功能(在一行中) CMD呢?

2 个答案:

答案 0 :(得分:4)

默认情况下,Powershell中的大多数错误都是“非终止”,也就是说,它们不会导致脚本在遇到脚本时停止执行。这就是为什么ls即使在rm命令发生错误后也会被执行。

但是,您可以通过几种方式更改此行为。您可以通过$errorActionPreference变量(例如$errorActionPreference = 'Stop')全局更改它,或者通过设置-ErrorAction参数(仅适用于所有cmdlet)来更改特定命令。这是对你最有意义的方法。

# setting ErrorAction to Stop will cause all errors to be "Terminating"
# i.e. execution will halt if an error is encountered
rm 'not-exists' -ErrorAction Stop; ls

或者,使用一些常用的简写

rm 'not-exists' -ea 1; ls

帮助解释了-ErrorAction参数。输入Get-Help about_CommonParameters

答案 1 :(得分:0)

要检查powershell命令的退出代码,可以使用$?

例如,以下命令将尝试删除not-exists,如果成功,则会运行ls

rm not-exists; if($?){ ls }