
次のようにすると、ファイルが存在し、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
}
よりクリーンな解決策をお持ちの方がいらっしゃいましたら、ぜひ教えていただきたいです。
編集: 解決策をかなり変更しました。繰り返しますが、これを行うより良い方法がある場合は、全体的な知識/スキルの向上に役立つ提案を歓迎します。