多个陈述使用&&

时间:2013-04-15 09:42:48

标签: shell powershell syntax cmd

CMD的等同声明是什么:

dir && cd ..
<\ n>在Powershell中?

我试过了:

dir -and cd ..

但它会引发错误:

  

Get-ChildItem:找不到与参数名称匹配的参数   &#39;和&#39;

     

在行:1字符:5

     

+ dir -and(cd ..)

     

+ CategoryInfo:InvalidArgument:(:) [Get-ChildItem],ParameterBindingException

     

+ FullyQualifiedErrorId:NamedParameterNotFound,Microsoft.PowerShell      .Commands.GetChildItemCommand

2 个答案:

答案 0 :(得分:4)

在PowerShell中没有cmd.exe &amp;&amp; 中的直接等效词,这意味着“只有在左侧成功时才执行右侧”。但是你可以写一个简短的函数来做同等的事情:

function IfTrue([ScriptBlock] $testExpression, [ScriptBlock] $runExpression) {
  if ( & $testExpression ) { & $runExpression }
}

例如:

IfTrue { get-childitem "fileThatExists.txt" -ea SilentlyContinue } { "File exists..." }

如果你想让$ testExpression产生输出,那么IfTrue函数可以写成如下:

function IfTrue([ScriptBlock] $testExpression, [ScriptBlock] $runExpression) {
  & $testExpression
  if ( $? ) { & $runExpression }
}

比尔

答案 1 :(得分:2)

这个怎么样?

dir; if ($?) {cd ..}

正在运行get-help about_automatic_variables | more说明:

  

$?包含上次操作的执行状态。它包含   如果上一次操作成功则为TRUE,如果失败则为FALSE。

在PS中,dir只是get-ChildItem的别名;对于cd同样Set-Location

编辑:同样的问题here,包括an answer直接来自马的嘴。