2012-07-17 3 views
4

У меня есть папки с разным количеством файлов. Как проверить, есть ли файлы и сколько? Я использую это, но когда есть только один файл, это ничего мне не дает. Спасибо.powershell - как проверить наличие одного файла

$number_of_files = Get-Childitem c:\folder -name -force 
$number_of_files.Count 

ответ

2

Попробуйте

(Get-ChildItem c:\folder -name -force | where {$_.GetType() -match "fileInfo"} | measure-object).count 
1

Я использую measure для этого:

$f = Get-Childitem c:\folder -name -force 
($f | measure).Count 
+0

К сожалению, это также будет измерять любые папки в папке c: \. –

+1

Я не заметил этого требования в его Q. Но вы правы, конечно. – jumbo

5

Изменить это следующим образом:

$number_of_files = @(Get-Childitem c:\folder -name -force) 
$number_of_files.Count 

Эта сила $number_of_files всегда быть массивом и иметь свойство счета r igth set также для значения 1

+0

Это решение учитывает не только файлы, но и папки. –

+0

@MarekDzikiewicz Я не заметил этого требования в его Q. Но вы, конечно, правы –

3

Ответ от @Marek работает, но он, возможно, не самый эффективный. Вместо того, чтобы делать .GetType() и выполнять регулярное выражение, почему бы просто не фильтровать на основе свойства в папке, а не в файловом объекте. IE:

(Get-ChildItem c: \ folder -name -force | где {! $ _. PSIsContainer} | мерный объект) .count.

Смежные вопросы