1

こんにちは、私は以下のコードを持っており、switch ステートメントを使用してそれを置き換える最良の方法を知りたいと思っていました。

$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"
4

2 に答える 2

4

あなたが投稿した例については、個人的にはネストされた 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
于 2012-08-13T12:21:36.593 に答える
1

私はうまくいく何かを考え出したので、皆さんの考えを教えてください.

$Des = "c:\test\"
$DListFiles = Get-ChildItem $Des -EA 0

Switch($Des)
   {  {!$Des} {$DDE = 4; break}
      {((Test-Path $Des)-ne $false -and $DListFiles -eq $null)}  {$DDE = 1; break}
      {((Test-Path $Des)-ne $false -and $DListFiles -ne $null)}  {$DDE = 2; break}
      {((Test-Path $Des)-eq $false)}                             {$DDE = 3; break}
   }

 $DDE
于 2012-08-16T20:43:21.807 に答える