Jak miałbym użyć programu PowerShell do zliczania liczby plików i folderów w folderze, emulując „właściwości” tego folderu w systemie Windows?
(get-childitem -recurse).count
zwraca całkowitą liczbę obiektów (suma liczby folderów i plików), oraz
(gci -rec | where { $_.PSIsContainer }).count
zwraca liczbę folderów. Ale czy istnieje sposób na policzenie folderów i plików w jednym poleceniu bez dwukrotnego przejścia przez system plików? Zakładam, że możliwe jest pisanie proceduralnego kodu PowerShell z nazwanymi zmiennymi i pętlami, ale nie wydaje się to normalnym sposobem korzystania z niego.
W pokrewnym temacie http://technet.microsoft.com/en-us/library/ee692796.aspx opisuje dwa sposoby uzyskania listy nazw plików:
Get-ChildItem C:\Scripts | Select-Object Name
i
Get-ChildItem C:\Scripts -name
Autor twierdzi, że są one równoważne, ale z -recurse pierwsze zwraca tylko nazwy plików, podczas gdy drugie zwraca pełną ścieżkę. Czy istnieje sposób na to, aby Select-Object zwrócił pełną ścieżkę, aby te dwa polecenia generowały ten sam wynik? (Losowe dźgnięcie w Select-Object Path
wytworzone puste linie, a nie ścieżki).
gci -rec -name
gci -rec | Select-Object xxx?
źródło
Odpowiedzi:
Możesz pobrać typ każdego elementu podczas iteracji po plikach, a następnie użyć
group-object
komendy, aby uzyskać liczbę każdego typu:Aby odpowiedzieć na drugie pytanie, wystarczy wybrać
FullName
właściwość:źródło