Я хочу отсканировать каталог (нет подпрограмм) и удалить любой файл с расширением. .avi
Я попробовал этот синтаксис, но не выдается никаких ошибок, и никакие файлы не удаляются. Это код, который я пробовал
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
Что нужно изменить, чтобы удалить все .avi
файлы из папки?
powershell
powershell-5.0
user2676140
источник
источник
rm *.avi
? (Да, это правильный синтаксис PowerShell, потому чтоrm
это псевдонимdel
.rm
иdel
оба являются псевдонимамиRemove-Item
командлета.Ответы:
Используйте
del *.<extension>
или один из его псевдонимов (напримерrm
, если вы более привыкли к bash).Поэтому было бы
del *.avi
удалить все файлы, заканчивающиеся в.avi
текущем рабочем каталоге.Используйте
del <directory>\*.<extension>
для удаления файлов в других каталогах.источник
ls *.avi -Recurse | foreach {rm $_}
Предполагая предпочтительный метод открытия экземпляра Powershell в каталоге, общая версия будет выглядеть следующим образом:
Для конкретной версии каталога:
Добавить в
-Recurse
для ,Get-ChildItem
чтобы влиять на все содержащиеся папки.Пример:
источник
Remove-Item
Commandlet должно быть все , что вам нужно. Просто передайте корневую папку, в которой существуют avi-файлы, и передайтеrecurse
флаг вместе с фильтром:Это должно выполняться быстрее, чем поиск файлов через
Get-ChildItem
и вызовRemove-Item
для каждого из них.При добавлении
-WhatIf
переключателя вам будет предложено удалить каждый файл, что является более безопасным для людей, которым неудобно использовать PowerShell.источник
-WhatIf
Выключатель является ненужным. Я внес изменение в этот ответ. +1Remove-Item
Командлет - это все, что вам нужно, и он работает быстрее, чем принятый в настоящее время ответ.-whatif
убедиться, что вы удалите только те файлы, которые хотите удалить. И особенно при предложении команды удаления неизвестным специалистам. Лучше всего держать учебные колеса на.Предположим, в текущем каталоге есть несколько текстовых файлов.
dir * -include *.txt
Иdir *.txt
работает, как ожидалось, ноdir -include *.txt
ничего не дает. Причина хорошо объяснена на переполнении стека .Исправленная команда:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}
источник
Это, наконец, сделал это для меня - попробовал все выше и нада.
Конечно, двухсторонняя сила не обязательна, но это то, что работает, поэтому я придерживаюсь этого.
источник
попробуй это
источник