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
}

하지만 두 개념을 함께 사용할 수는 없습니다. 다음에서 와일드카드 파일이 존재하는 경우; 반환값은 항상 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
}

누구든지 더 깨끗한 솔루션을 가지고 있다면 여전히 보고 싶습니다.

편집: 내 솔루션이 상당히 변경되었습니다. 다시 한 번 더 좋은 방법이 있다면; 나는 전반적인 지식/기술을 향상시키는 데 도움이 되는 제안에 매우 개방적입니다.

관련 정보