web-dev-qa-db-ja.com

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

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

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

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

21
user2676140

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

だからそれはdel *.aviで終わるすべてのファイルを削除するには.avi現在の作業ディレクトリ。

使用する del <directory>\*.<extension>他のディレクトリにあるファイルを削除します。

15
GiantTree

ディレクトリで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 }
11
David Metcalfe

Remove-Itemコマンドレットで十分です。 aviファイルが存在するルートフォルダを渡して、フィルタとともにrecurseフラグを渡すだけです。

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

これは、Get-ChildItemを介してファイルを検索し、ファイルごとにRemove-Itemを呼び出すよりも高速に実行されます。

-WhatIfスイッチを追加すると、各ファイルを削除する前にプロンプ​​トが表示されます。これは、PowerShellに慣れていない人にとっては安全です。

2
Keith Miller

これを試して

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

これは最終的に私のためにそれをしました-上記すべてとnadaを試してみました。

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

確かに2つの力は必要ありませんが、それが機能しているので、私はこだわり続けています。

0
visionmn2

現在のディレクトリにいくつかのテキストファイルがあるとします。
dir * -include *.txtdir *.txtは期待どおりに機能しますが、dir -include *.txtは何も与えません。理由は Stack Overflow でよく説明されています。

修正されたコマンド:
dir 'C:\Users\ramrod\Desktop\Firefly\*.avi' | foreach {del $_}

0
guest-vm