Jak mogę uzyskać tylko katalogi za pomocą Get-ChildItem?
Używam programu PowerShell 2,0 i chcę przekazać wszystkie podkatalogi określonej ścieżki. Następujące polecenie wyświetla wszystkie pliki i katalogi, ale nie mogę dowiedzieć się, jak odfiltrować pliki.
Get-ChildItem c:\mypath -Recurse
Próbowałem użyć
$ _. Attributes, aby uzyskać atrybuty, ale potem nie wiem, jak zbudować dosłowne wystąpienie
System.IO.FileAttributes, aby je porównać . W
cmd.exebyłoby to
dir/b/ad/s
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
15 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
W przypadku wersji programu PowerShell mniejszych niż 3,0
:
Obiekt zwrócony przez ma właściwość podstawową . Chcesz tylko zaznaczyć te elementy.
Jeśli chcesz, aby nazwy ciągów katalogów surowych były możliwe, możesz to zrobić
Dla programu PowerShell 3,0 i nowszych
:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Jeśli wolisz aliasy, użyj
lub
Rekurencyjnie przeglądaj drzewo podkatalogów, a także dodaj możliwość .
Przetestowano na PowerShell 4,0, PowerShell 5,0 (Windows 10) i
PowerShell Core 6.0
https://github.com/powershell/powershell
(Windows 10, Mac i Linux).
Anonimowy użytkownik
Potwierdzenie od:
Zastanawiam się, czy PowerShell 3.0 ma przełącznik, który zwraca tylko katalogi; wydaje się logiczne, aby dodać.
Anonimowy użytkownik
Potwierdzenie od:
dir -r | where { $_ -is [System.IO.DirectoryInfo] }
Anonimowy użytkownik
Potwierdzenie od:
Jeśli chcesz tylko nazwy folderów i nic więcej, użyj tego:
Jeśli szukasz określonego folderu, możesz użyć następujących. W tym przypadku szukam folderu o nazwie :
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
To da ci wynik struktury katalogu głównego z nazwą folderu tylko dla katalogów.
Anonimowy użytkownik
Potwierdzenie od:
aby uzyskać „nieprzetworzony ciąg znaków”.
Ale w rzeczywistości zostaną zwrócone obiekty typu . W przypadku nieprzetworzonych ciągów można użyć:
Różnica ma znaczenie, gdy wartość jest łączona z ciągiem znaków:
Anonimowy użytkownik
Potwierdzenie od:
Który wykonuje następujące czynności
Anonimowy użytkownik
Potwierdzenie od:
Get-ChildItem
aby najpierw rekurencyjnie pobrać wszystkie foldery i pliki. Następnie prześlij to wyjście do zdania
Where-Object
który akceptuje tylko pliki.
<pre class="lang-powershell prettyprint-override">
Anonimowy użytkownik
Potwierdzenie od:
Mam nadzieję że to pomoże!
Anonimowy użytkownik
Potwierdzenie od:
zabawne rzeczy do zrobienia za pomocą polecenia cmdlet Get-ChildItem
https://technet.microsoft.com/ ... .aspx
".
Użyłem go w swoim skrypcie i działa dobrze.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Get-ChildItem c:\mypath -Recurse | Where-Object {$_.Attributes -and [IO.FileAttributes]::Directory}
Jednak wolę rozwiązanie Marka (Where-Object {$ _ -is [System.IO.DirectoryInfo]}
).