我想掃描一個目錄(沒有子目錄)並刪除任何擴展名為 的文件.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 }
新增至-Recurse
以Get-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-ChildItem
並Remove-Item
為每個文件調用執行得更快。
- 新增
-WhatIf
開關將列出將要刪除的項目,但不會執行實際刪除。 - 添加
-Confirm
開關會在刪除每個檔案之前提示您,這對於不太習慣的人來說更安全電源外殼。
答案4
這終於為我做到了 - 嘗試了以上所有內容,但沒有。
get-childitem "<drive>:\<folder>" -recurse -force -include *.<ext> | remove-item -force
當然,不需要兩個力,但這就是有效的,所以這就是我堅持的。