特定のファイル拡張子を持つすべてのファイルを削除するPowershell

特定のファイル拡張子を持つすべてのファイルを削除するPowershell

ディレクトリ(サブディレクトリはありません)をスキャンして、拡張子が のファイルを削除したいのですが.avi 、この構文を試しましたが、エラーは発生せず、ファイルは削除されませんでした。これは私が試したコードです。

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

.aviフォルダーからすべてのファイルを削除するには何を変更する必要がありますか?

答え1

del *.<extension>またはそのエイリアスの 1 つ ( rmbash に慣れている場合は など) を使用します。

つまり、現在の作業ディレクトリ内の で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

アイテムの削除必要なのはコマンドレットだけです。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

確かに 2 つの -force は必須ではありませんが、それが機能しているので、私はそれを使い続けます。

関連情報