Powershell видалити всі файли з певним розширенням


22

Я хочу сканувати каталог (немає підпунктів) та видалити будь-який файл із розширенням. .avi Я спробував цей синтаксис, але помилки не викинуті та файли не видалено. Це код, який я спробував

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

Що слід змінити, щоб видалити всі .aviфайли з папки?


3
Що вам заважає використовувати rm *.avi? (Так, це синтаксис PowerShell, оскільки rmце псевдонім del.
GiantTree

2
Технічно rmі delє обома псевдонімами Remove-Itemкомандлета.
корінь

Відповіді:


16

Використовуйте del *.<extension>або один із його псевдонімів (наприклад rm, якщо ви більше звикли базуватись).

Тож було б del *.aviвидалити всі файли, що закінчуються в .aviпоточному робочому каталозі.

Використовуйте del <directory>\*.<extension>для видалення файлів в інших каталогах.


15
Щоб зробити це рекурсивноls *.avi -Recurse | foreach {rm $_}
Каньйон Колоб

11

Якщо припустити кращий метод відкриття екземпляра 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 }

3

Команда Remove-Itemповинна бути всім необхідним. Просто передайте кореневу папку, де існують файли avi, і передайте recurseпрапор разом з фільтром:

Remove-Item 'C:\Users\ramrod\Desktop\Firefly\*' -recurse -Include *.avi

Це має виконатись швидше, ніж пошук файлів через Get-ChildItemта виклик Remove-Itemдля кожного з них.

Додавання -WhatIfкомутатора підкаже вам перед видаленням кожного файлу, що безпечніше для людей, які не мають комфортності в PowerShell.


1
Не впевнений, чому ця відповідь отримала перемогу. -WhatIfВимикач є непотрібним. Я подав редагування на цю відповідь. +1 Remove-ItemКомандна команда - це все, що вам потрібно, і працює швидше, ніж прийнята на даний момент відповідь.
Грег Бургхардт

Це гарна ідея, щоб -whatifпереконатися, що ви видалите лише ті файли, які ви хочете видалити. І особливо, коли пропонують команду видалення тим, хто не знає технічної експертизи. Найкраще тримати навчальні колеса.
Кіт Міллер

0

Припустимо, у поточному каталозі є кілька текстових файлів.
dir * -include *.txt& dir *.txtпрацювати, як очікувалося, але dir -include *.txtнічого не дає. Причина добре пояснена в Stack Overflow .

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


0

Це нарешті зробило це для мене - спробував усе вище і нада.

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

впевнений, що два-сили не потрібно, але це те, що працює, так що я дотримуюся.


0

спробуйте це

Remove-Item "c:\temp\*.txt" 

1
ей, це, здається, не видаляє AVI-файли, і, здається, це не робиться з папки, про яку йдеться. Чи можете ви покращити цю відповідь чи пояснити, як це може допомогти в цій ситуації?
Sirex
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.