Powershell - FILE(ワイルドカード)が存在し、0kbより大きい場合

Powershell - FILE(ワイルドカード)が存在し、0kbより大きい場合

次のようにすると、ファイルが存在し、0kb より大きいかどうかを正常に確認できます。

$getFILE = 'C:\DIR\FILE1.txt'

IF (test-path $getFILE){
    IF ((get-item $getFILE).length -gt 0) {
        "OK";return 0
    }
    ELSE {
        "0 bytes";return 2
    }
}
ELSE {
    "doesn't exist";return 1
}

次のようにしてワイルドカード ファイルが存在するかどうかを確認できます。

$getFILE = 'C:\DIR\FILE*.*'

IF (test-path $getFILE){
    "OK";return 0
}
else {
    "doesn't exist";return 1
}

しかし、2 つの概念を連携させることはできません。以下では、ワイルドカード ファイルが存在する場合、戻り値は常に 0 になります。

$getFILE = 'C:\DIR\FILE*.*'

IF (test-path $getFILE){
    IF ((get-item $getFILE).length -gt 0) {
        "OK";return 0
    }
    else {
        "0 bytes";return 2
    }
}
else {
    "doesn't exist";return 1
}

答え1

さて、もう少し遊んでみたら、うまくいくものが見つかりました:

$vDIR = 'C:\DIR'
$vFILE = 'FILE*.*'

$proc = @(Get-ChildItem $vDIR -Recurse -Include $vFile | Where {$_.length -gt 0})
If ($proc.count -gt 0) {
   ForEach ($item in $proc) {
      Do a bunch of stuff
   }
Else {
   Do this other thing
}

よりクリーンな解決策をお持ちの方がいらっしゃいましたら、ぜひ教えていただきたいです。

編集: 解決策をかなり変更しました。繰り返しますが、これを行うより良い方法がある場合は、全体的な知識/スキルの向上に役立つ提案を歓迎します。

関連情報