嗨,我有下面的代码,想知道使用switch语句替换它的最佳方法。此示例有4种可能的结果,但最终可能会导致20多个结果,并且如果语句变得混乱。
$Des = "C:\tools\"
$DListFiles = Get-ChildItem $Des -EA 0
IF((Test-Path $Des)-ne $false -and $DListFiles -eq $null){$DDE = 1}
ElseIF((Test-Path $Des)-ne $false -and $DListFiles -ne $null){$DDE = 2}
ElseIF((Test-Path $Des)-eq $false){$DDE = 3}
Else{$DDE = 4}
write-host "$DDE"
最佳答案
对于您发布的示例,我个人将使用嵌套的if来使逻辑更清晰:
If(Test-Path $Des){
If($DListFiles -eq $null){
$DDE = 1
}Else{
$DDE = 2
}
}Else{
If($DListFiles -eq $null){
$DDE = 3
}else{
$DDE = 4
}
}
顺便说一下,您编写的方式并没有提供我认为您想要的逻辑。我不相信您会得到$ DDE =2。如果我正确阅读了您发布的内容,则在下面发布逻辑表。同样,嵌套的If可以帮助解决问题。
Test-Path $Dlist is Null $DDE
TRUE TRUE 1
FALSE FALSE 3
TRUE TRUE 4
FALSE FALSE 3