web-dev-qa-db-ja.com

フォルダとそのサブフォルダからすべてのファイルを削除する

フォルダ構造からすべてのファイルを削除したいので、空のフォルダ構造を残します。

これは、バッチでも VBScript スクリプトでも実現できますか?

私は非常に基本的なバッチコマンドを試してみましたが、これは各ファイルの削除を許可することをユーザーに要求しました。何百ものファイルがあるので、これは適切な解決策ではありませんでした、そして、これは時間の経過とともに大いに増加するでしょう。

あなたは何を提案できますか?

43
BobJim

これは PowerShell を使って実現できます。

Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}

このコマンドは$path内の各子項目を取得し、それぞれに対してdeleteメソッドを実行します。これは非常に高速です。フォルダ構造はそのまま残ります。

拡張子のないファイルがある場合は、

Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}

代わりに。

PowerShell v2の後に-Fileパラメータが追加されたようです。そうであれば、

Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}

拡張子を持つファイルはうまくいくはずです。

うまくいかない場合は、 あなたがPowershellの最新版を持っているか確認してください

66
MDMoore313

delコマンドでこれを行うことができます。

dir C:\folder
del /S *

/Sスイッチは再帰的にファイルだけを削除することです。

21
phoops

短くてスイートなPowerShell。それがどのようなPSの最低バージョンで動作するのかわからない。

Remove-Item c:\Tmp\* -Recurse -Force
14
Evan Nadeau

あなたの最初の質問の行間を読む私はあなたが使うことができる代わりのバッチコード行を提供することができます。これが実行されたときに何ができるかは、60日以上前のファイルのみを削除することです。こうすればあなたはこれをスケジュールされたタスクに入れることができそしてそれが実行されるときそれはあなたがディレクトリ全体を吹き飛ばすよりもむしろあなたが必要としない余分なファイルを削除する。あなたが望むならあなたは60から5日または1日さえ変更することができます。これはフォルダを削除しません。

forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4
Travis

PowerShellを使用する

Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse 
2

単一のファイルまたはフォルダを削除するにはPowerShellを使用してください。 PowerShellでDeleteコマンドを実行する前に、削除したいオブジェクトへのフルアクセス権を持つアカウントでサーバーまたはPCにログインしていることを確認する必要があります。

例付き:http://dotnet-helpers.com/powershell-demo/how-to-delete-フォルダまたはファイルを使ったpowershell /

PowerShellコマンドを使用してファイルを削除する

Remove-Item -Path "C:\ dotnet-helpers\DummyfiletoDelete.txt"

上記のコマンドは、「C:\ dotnet-helpers」の場所にある「DummyfiletoDelete.txt」ファイルを実行して削除します。

PowerShellコマンドを使用してすべてのファイルを削除する

Remove-Item -Path "C:\ dotnet-helpers *。*"

PowerShellコマンドを使用してすべてのファイルとフォルダーを削除する

Remove-Item -Path "C:\ dotnet-helpers *。*" - 再帰

-recurseはドリルダウンしてもっとたくさんのファイルを見つけます。 –recurseパラメータを使用すると、PowerShellは許可を求めずに子項目を削除できます。さらに、-forceパラメータを追加して、隠しファイルまたは読み取り専用ファイルを削除できます。

ファイルを強制的に削除するための-Forceコマンドの使用

PowerShellコマンドを使用してすべてのファイルを強制的に削除する

Remove-Item -Path "C:\ dotnet-helpers *。*" - 強制

2

これがIMOの最も簡単な方法です

PowerShellを開き、ディレクトリ(cd)、、次にに移動します。

ls -Recurse * | rm

(あの)すべてがなくなっている...

特定の拡張子に基づいて削除したい場合

ls -Recurse *.docx | rm

lsはディレクトリをリストしています

-Recurseは、PowerShellに任意のサブディレクトリに移動するように指示するフラグです。

*はすべてを言います

拡張子が.docの*.docすべて

|は左から右へ出力を送ります

rm delete

他のすべての答えは、これを必要以上に混乱させるように思われます。

1
Kolob Canyon

PowerShellを使ってこれを試してください。この例では、すべての.classファイルを削除します。

Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1
Boubakr

現在のディレクトリとサブディレクトリからすべてのファイルを削除しますが、フォルダ構造は残します。

/Q)スイッチは、削除してもいいかどうかをユーザーに尋ねるためのものです。

注意:貴重なものを削除していないことを確認するために/Qなしで試してください。

del /S * /Q 
1
hdoghmen
  1. Windowsエクスプローラで、すべてのファイルとフォルダを含むルートディレクトリを選択します。

  2. 検索する *

  3. 種類順に並べ替え(すべてのフォルダが一番上に、すべてのファイルがその下に表示されます)

  4. すべてのファイルを選択して[削除]を押します。

これにより、すべてのファイルが削除され、ディレクトリ構造が維持されます。

1
Emel
dir C:\testx\ -Recurse -File | rd -WhatIf
What if: Performing the operation "Remove File" on target "C:\testx\x.txt".
What if: Performing the operation "Remove File" on target "C:\testx\bla\x.txt".
0
user646044