Chcę przeskanować katalog (nie ma żadnych napisów) i usunąć dowolny plik z rozszerzeniem .avi
Próbowałem tej składni, ale nie są zgłaszane żadne błędy i żadne pliki nie są usuwane. To jest kod, który próbowałem
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
Co należy zmienić, aby usunąć wszystkie .avi
pliki z folderu?
powershell
powershell-5.0
użytkownik2676140
źródło
źródło
rm *.avi
? (Tak, to poprawna składnia programu PowerShell, ponieważrm
jest to pseudonimdel
.rm
idel
to zarówno aliasy zRemove-Item
apletu polecenia.Odpowiedzi:
Użyj
del *.<extension>
lub jednego z jego aliasów (na przykładrm
, jeśli jesteś bardziej przyzwyczajony do bashowania).Tak byłoby
del *.avi
usunąć wszystkie pliki, które kończą się w.avi
bieżącym katalogu roboczym.Służy
del <directory>\*.<extension>
do usuwania plików z innych katalogów.źródło
ls *.avi -Recurse | foreach {rm $_}
Zakładając preferowaną metodę otwierania instancji Powershell w katalogu, ogólna wersja wyglądałaby następująco:
W przypadku wersji specyficznej dla katalogu:
Dodaj w
-Recurse
celuGet-ChildItem
wpłynąć na wszystkie zawarte foldery.Przykład:
źródło
Polecenie
Remove-Item
powinno być wszystkim, czego potrzebujesz. Wystarczy przekazać folder główny, w którym istnieją pliki avi, i przekazaćrecurse
flagę wraz z filtrem:Powinno to działać szybciej niż wyszukiwanie plików za pomocą
Get-ChildItem
i wywoływanieRemove-Item
dla każdego z nich.Dodanie
-WhatIf
przełącznika spowoduje wyświetlenie monitu przed usunięciem każdego pliku, co jest bezpieczniejsze dla osób mniej komfortowych z programem PowerShell.źródło
-WhatIf
Przełącznik jest niepotrzebny. Przesłałem edycję tej odpowiedzi. +1 PolecenieRemove-Item
jest wszystkim, czego potrzebujesz i działa szybciej niż obecnie akceptowana odpowiedź.-whatif
sprawdzenie, czy usuniesz tylko pliki, które chcesz usunąć. Zwłaszcza gdy oferuje polecenie usunięcia osobom o nieznanej wiedzy technicznej. Najlepiej utrzymać koła treningowe włączone.Załóżmy, że w bieżącym katalogu znajduje się kilka plików tekstowych.
dir * -include *.txt
idir *.txt
pracuj zgodnie z oczekiwaniami, aledir -include *.txt
nic nie daje. Powód jest dobrze wyjaśniony w przypadku przepełnienia stosu .Poprawione polecenie:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}
źródło
To w końcu zrobiło to dla mnie - próbowałem wszystkiego powyżej i nada.
pewnie dwie siły nie są wymagane, ale to działa, więc właśnie tego się trzymam.
źródło
Spróbuj tego
źródło