Powershell刪除具有特定檔案副檔名的所有文件

Powershell刪除具有特定檔案副檔名的所有文件

我想掃描一個目錄(沒有子目錄)並刪除任何擴展名為 的文件.avi 我嘗試了此語法,但沒有拋出任何錯誤,也沒有刪除任何文件。這是我嘗試過的程式碼

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

為了刪除.avi資料夾中的所有文件,應該更改什麼?

答案1

使用del *.<extension>或其別名之一(例如rm,如果您更習慣 bash)。

因此,這將del *.avi刪除.avi以當前工作目錄結尾的所有檔案。

用於del <directory>\*.<extension>刪除其他目錄中的檔案。


警告:del *.<extension>都會del <directory>\*.<extension>刪除與該模式相符的其他副檔名。這些文件不會送到回收站。

範例:del *.doc*刪除*.doc, *.docm和 *.docx。作品del <directory>\*.<extension>以類似的方式進行。

答案2

假設在目錄中開啟 Powershell 實例的首選方法,通用版本如下:

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

對於特定於目錄的版本:

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

新增至-RecurseGet-ChildItem影響所有包含的資料夾。

例子:

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

答案3

除去項目Cmdlet 應該可以滿足您的所有需求。只需傳遞 avi 檔案所在的根資料夾並傳遞參數-Recurse和過濾器:

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

這應該比通過查找文件Get-ChildItemRemove-Item為每個文件調用執行得更快。

  • 新增-WhatIf開關將列出將要刪除的項目,但不會執行實際刪除。
  • 添加-Confirm開關會在刪除每個檔案之前提示您,這對於不太習慣的人來說更安全電源外殼

答案4

這終於為我做到了 - 嘗試了以上所有內容,但沒有。

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

當然,不需要兩個力,但這就是有效的,所以這就是我堅持的。

相關內容