Подсчет элементов в папке с помощью PowerShell
Я пытаюсь написать очень простой скрипт PowerShell, чтобы дать мне общее количество элементов (файлов и папок) в данной папке (c:MyFolder). Вот что я сделал:
Write-Host ( Get-ChildItem c:MyFolder ).Count;
проблема в том, что если у меня есть 1 или 0 элементов, команда не работает---она ничего не возвращает.
какие идеи?
8 ответов:
вы должны использовать
Measure-Objectрассчитывать вещи. В этом случае это будет выглядеть так:Write-Host ( Get-ChildItem c:\MyFolder | Measure-Object ).Count;или если это слишком долго
Write-Host ( dir c:\MyFolder | mo).Count;а в PowerShell 4.0 используйте
measureпсевдоним вместоmoWrite-Host (dir c:\MyFolder | measure).Count;
Я наконец нашел эту ссылку:
https://blogs.perficient.com/microsoft/2011/06/powershell-count-property-returns-nothing/
Ну, получается, что это причуда вызвала именно потому, что там был только один файл в каталоге. Некоторые поиски показали, что в в этом случае PowerShell возвращает скалярный объект вместо массива. Этот объект не имеет свойства count, поэтому нет ничего, чтобы возвращать.
решение -- заставить PowerShell вернуть массив с помощью
@символ:Write-Host @( Get-ChildItem c:\MyFolder ).Count;
Если вам нужно ускорить процесс (например, подсчет 30k или более файлов), то я бы пошел с чем-то вроде этого..
$filepath = "c:\MyFolder" $filetype = "*.txt" $file_count = [System.IO.Directory]::GetFiles("$filepath", "$filetype").Count
Только Файлы
Get-ChildItem D:\ -Recurse -File | Measure-Object | %{$_.Count}Только Папки
Get-ChildItem D:\ -Recurse -Directory | Measure-Object | %{$_.Count}и
Get-ChildItem D:\ -Recurse | Measure-Object | %{$_.Count}
рекурсивно подсчитывать файлы в каталогах в PowerShell 2.0
ls -rec | ? {$_.mode -match 'd'} | select FullName, @{N='Count';E={(ls $_.FullName | measure).Count}}
в powershell вы можете использовать несколько команд, для поиска этой команды цифра:
Get-Alias;таким образом, cammands может использовать:
write-host (ls MydirectoryName).Countили
write-host (dir MydirectoryName).Countили
write-host (Get-ChildrenItem MydirectoryName).Count
Comments
https://www.technobridge.in/training/clinical-research/clinical-research-courses-in-nagpur