9

Я хочу отсканировать каталог (нет подпрограмм) и удалить любой файл с расширением .avi Я попробовал этот синтаксис, но не выдает никаких ошибок и не удаляет файлы. Это код, который я пробовал

get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}

Что нужно изменить, чтобы удалить все файлы .avi из папки?

4 ответа4

8

Используйте del *.<extension> или один из его псевдонимов (например, rm , если вы более привыкли к bash).

Так что было бы del *.avi удалить все файлы, оканчивающиеся на .avi в текущем рабочем каталоге.

Используйте del <directory>\*.<extension> для удаления файлов в других каталогах.

4

Предполагая предпочтительный метод открытия экземпляра Powershell в каталоге, общая версия будет выглядеть следующим образом:

Get-ChildItem *.avi | foreach { Remove-Item -Path $_.FullName }

Для конкретной версии каталога:

Get-ChildItem -Path 'C:\Users\ramrod\Desktop\Firefly' *.avi | foreach { Remove-Item -Path $_.FullName }

Добавьте в -Recurse для Get-ChildItem чтобы повлиять на все содержащиеся в нем папки.

Пример:

Get-ChildItem *.avi -Recurse | foreach { Remove-Item -Path $_.FullName }
0

Это, наконец, сделал это для меня - попробовал все выше и нада.

get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force

Конечно, двухсторонняя сила не обязательна, но это то, что работает, поэтому я придерживаюсь этого.

0

Предположим, в текущем каталоге есть несколько текстовых файлов.
dir * -include *.txt & dir *.txt работает должным образом, но dir -include *.txt ничего не дает. Причина хорошо объяснена на переполнении стека.

Исправленная команда:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .