フォルダ構造から全てのファイルを削除したいので、空のフォルダ構造になってしまいました
これは、バッチでもVBScriptスクリプトでも実現できますか?
私は非常に基本的なバッチコマンドを試したことがありますが、これはユーザーが各ファイルの削除を許可する必要がありました。これは何百ものファイルがあり、これは時間の経過とともに大量に増加するので、適切な解決策ではありませんでした
何か提案できることはありますか?
72 BobJim 2014-04-15
これは、PowerShell を使用することで実現できます
Get-ChildItem -Path C:\Temp -Include *.* -File -Recurse | foreach { $_.Delete()}
このコマンドは$path
の各子アイテムを取得し、その子アイテムに対してdeleteメソッドを実行し、非常に高速です。フォルダ構造はそのまま残されています
拡張子のないファイルを持っている可能性がある場合は、使用してください
Get-ChildItem -Path C:\Temp -Include * -File -Recurse | foreach { $_.Delete()}
instead.
どうやらPowerShell v2以降に-File
パラメータが追加されたようです。 もしそうであれば
Get-ChildItem -Path C:\Temp -Include *.* -Recurse | foreach { $_.Delete()}
拡張子のあるファイルのトリックを行う必要があります
うまくいかない場合は、最新版の Powershell があるかどうかチェックしてください
89 MDMoore313 2014-04-15
短くてスイートなPowerShell。それが動作するPSの最低バージョンを確認していません
Remove-Item c:\Tmp\* -Recurse -Force
54 Evan Nadeau 2017-11-02
del
コマンドで行うことができます
dir C:\folder
del /S *
/S
スイッチは、ファイルのみを再帰的に削除するためのものです
22 phoops 2014-04-15
Using PowerShell:
Get-ChildItem -Path c:\temp -Include * | remove-Item -recurse
5 Gregory Suvalian 2014-10-28
あなたの元の質問の行の間を読んで、私はあなたが使用することができます代替のBATCHコード行を提供することができます。これを実行すると、60日以上前のファイルのみが削除されます。この方法では、これをスケジュールされたタスクに入れて、それが実行されたときに、ディレクトリ全体を吹き飛ばすのではなく、必要のない余分なファイルを削除することができます。60日を5日に変更することもできますし、1日でも構いません。これはフォルダの削除はしません
forfiles -p "c:\path\to\files" -d -60 -c "cmd /c del /f /q @path"
4 Travis 2014-04-15
PowerShell を使用して、単一のファイルまたはフォルダを削除します。PowerShell で Delete コマンドを実行する前に、削除したいオブジェクトにフルアクセスできるアカウントでサーバーまたは PC にログインしていることを確認する必要があります
例: http://dotnet-helpers.com/powershell-demo/how-to-delete-a-folder-or-file-using-powershell/
PowerShell の commnads を使用してファイルを削除します
Remove-Item -Path “C:D\dotnet-helpers\DummyfiletoDelete.txt”
上記コマンドは、”C:D\dotnet-helpers “内に存在する “DummyfiletoDelete.txt “ファイルを実行して削除します
PowerShell の commnads を使用してすべてのファイルを削除します
Remove-Item -Path “C:dotdotnet-helpers*.*”
PowerShell の commnads を使用して、すべてのファイルとフォルダを削除します
Remove-Item -Path “C:dotdotnet-helpers*.*”-recurse
-recurse
はドリルダウンして、さらにたくさんのファイルを見つけます。–recurse
パラメータを指定すると、PowerShell が許可を求めずに子アイテムを削除できるようになります。さらに、-force パラメータを追加することで、隠しファイルや読み取り専用のファイルを削除することができます
強制的にファイルを削除するには-Forceコマンドを使用します
PowerShellコマンドを使って強制的にすべてのファイルを削除します
Remove-Item -Path “C:dotdotnet-helpers*.*”-強制的に
4 thiyagu selvaraj 2018-05-10
PowerShellを使って試してみてください。この例では、すべての.classファイルを削除したいと思います
Get-ChildItem '.\FOLDERNAME' -include *.class -recurse | foreach ($_) {remove-item $_.FullName}
1 Boubakr 2014-11-20
Windowsエクスプローラで、すべてのファイルとフォルダを含むルートディレクトリを選択します
検索
タイプ別に並べ替え(すべてのフォルダが一番上に表示され、その下にすべてのファイルが表示されます
すべてのファイルを選択し、Deleteを押します
これにより、すべてのファイルが削除され、ディレクトリ構造が保持されます
1 Emel 2015-03-16
カレントディレクトリとサブディレクトリからすべてのファイルを削除しますが、フォルダ構造は残します
(/Q
) スイッチは、削除しても良いかどうかを尋ねるためのものです
注意 : 貴重なものを削除していないことを確認するために、/Q
を抜きで試してみてください
del /S * /Q
1 hdoghmen 2015-05-18
これが一番簡単な方法です
PowerShellを開き、ディレクトリ(cd
)に移動し、then
ls -Recurse * | rm
パッと見)すべてが消えてしまった
特定の拡張子に基づいて削除したい場合
ls -Recurse *.docx | rm
ls
がディレクトリをリストアップしています
-Recurse
は powershell が任意のサブディレクトリに入ることを指示するフラグです
*
が全てを語っている
*.doc
すべて.docの拡張子で
|
出力を左から右に送ります
rm
delete
他の回答を見る限り、必要以上に混乱しているように見えます
1 Kolob Canyon 2016-10-12
以下のコマンドでフォルダとそのサブフォルダ内のすべてのファイルを削除することができます
Get-ChildItem -Recurse -Path 'D:\Powershell Practice' |Where-Object{$_.GetType() -eq [System.IO.FileInfo]} |Remove-Item
Or
Get-ChildItem -Recurse -Path 'D:\Powershell Practice' -File | Remove-Item
1 Dishant Batra 2020-03-01
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 None 2017-04-10
Powershell 5.1で
$extensions_list = Get-ChildItem -Path 'C:\folder_path\' -Recurse
foreach ( $extension in $extensions_list) {
if ($extension.Attributes -notlike "Directory") {
Remove-Item $extension.FullName
}
}
ディレクトリではないすべてのイテンを削除します
$extension.FullName = アイテムパス
$extension.Attributes = Item Type ( Directory or Archive ) となります
0 Maycon Paixão 2020-02-04
上記の回答の補足ですが、実はRemove-Itemコマンドに-Includeキーワードが含まれているので、上記の回答でGet-Childitemを使用して結果をパイプラインに渡す必要はありません
一つは簡単にできる
Remove-Item -Include “.” “C:\Temp” -Recurse
-1 Sams0nT 2018-10-14