Powershell тестируют если пустая папка

В Powershell, как я тестирую, если каталог пуст?

57
задан 11 May 2012 в 15:24

2 ответа

Получение количества от Добирается-ChildItem, может обеспечить ложные результаты, потому что пустая папка или ошибка, получающая доступ к папке, могли привести к 0 количествам.

способ, которым я проверяю на пустые папки, состоит в том, чтобы выделить ошибки:

Try { # Test if folder can be scanned
   $TestPath = Get-ChildItem $Path -ErrorAction SilentlyContinue -ErrorVariable MsgErrTest -Force | Select-Object -First 1
}
Catch {}
If ($MsgErrTest) { "Error accessing folder" }
Else { # Folder can be accessed or is empty
   "Folder can be accessed"
   If ([string]::IsNullOrEmpty($TestPath)) { # Folder is empty
   "   Folder is empty"
   }
}

вышеупомянутый код сначала пытается получить доступ к папке. Если ошибка происходит, она производит это, ошибка произошла. Если не было никакой ошибки, заявите, что "К папке можно получить доступ", и затем проверять, пусто ли это.

0
ответ дан 1 November 2019 в 16:04

После изучения некоторых существующих ответов, и экспериментирование немного, я закончил тем, что использовал этот подход:

function Test-Dir-Valid-Empty {
    param([string]$dir)
    (Test-Path ($dir)) -AND ((Get-ChildItem -att d,h,a $dir).count -eq 0)
}

Это будет первая проверка на действительный каталог (Test-Path ($dir)). Это затем проверит на любое содержание включая любые каталоги, скрытый файл или "регулярные" файлы ** из-за атрибутов d, h, и a, соответственно.

Использование должно быть достаточно четким:

PS C_\> Test-Dir-Valid-Empty projects\some-folder
False 

... или альтернативно:

PS C:\> if(Test-Dir-Valid-Empty projects\some-folder){ "empty!" } else { "Not Empty." }
Not Empty.
<час>

** На самом деле я не на 100% уверен, что определенный эффект a здесь, но он действительно в любом случае заставляет все файлы быть включенными. Документация указывает, что ah выставочные скрытые файлы, и я верю as, должен показать системные файлы, таким образом, я предполагаю a на своем собственном, просто показывает "регулярные" файлы. При удалении его из функции выше это в любом случае найдет спрятанные файлы, но не других.

0
ответ дан 1 November 2019 в 16:04

Другие вопросы по тегам:

Похожие вопросы: