ディレクトリ(サブディレクトリはありません)をスキャンして、拡張子が のファイルを削除したいのですが.avi
、この構文を試しましたが、エラーは発生せず、ファイルは削除されませんでした。これは私が試したコードです。
get-childitem 'C:\Users\ramrod\Desktop\Firefly' -include *.avi | foreach ($_) {remove-item $_.fullname}
.avi
フォルダーからすべてのファイルを削除するには何を変更する必要がありますか?
答え1
del *.<extension>
またはそのエイリアスの 1 つ ( 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
のアイテムの削除必要なのはコマンドレットだけです。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 は必須ではありませんが、それが機能しているので、私はそれを使い続けます。