Powershell - Если ФАЙЛ (подстановочный знак) существует и его размер больше 0 КБ

Powershell - Если ФАЙЛ (подстановочный знак) существует и его размер больше 0 КБ

Я могу успешно проверить, существует ли файл и больше ли его размер 0 КБ, используя следующее:

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

Однако я не могу заставить эти две концепции работать вместе. В следующем примере, если файл с подстановочными знаками существует, то возвращается всегда 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
}

Если у кого-то есть более чистое решение, я все равно был бы рад его увидеть.

EDIT: Изменил свое решение довольно сильно. Опять же, если есть лучший способ сделать это; я очень открыт для предложений, которые помогут мне улучшить мои общие знания/навыки.

Связанный контент