0

CMD 的等效语句是什么:

dir && cd ..

在 Powershell 中?

我试过了:

dir -and cd ..

但它会引发错误:

Get-ChildItem :找不到与参数名称“和”匹配的参数。

在行:1 字符:5

+dir -and (cd ..)

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

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

4

2 回答 2

4

PowerShell 中没有 cmd.exe &&的直接等效项,这意味着“如果左侧成功,则仅执行右侧”。但是,您可以编写一个简短的函数来执行等效操作:

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 }
}

账单

于 2013-04-15T17:25:05.457 回答
2

这个怎么样?

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

运行get-help about_automatic_variables | more说明:

美元?包含上次操作的执行状态。如果最后一个操作成功则包含 TRUE,如果失败则包含 FALSE。

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

编辑:这里有同样的问题,包括直接从马嘴里得到的答案。

于 2013-04-16T15:13:59.417 回答