web-dev-qa-db-ja.com

PowerShellでコンテンツを含むディレクトリを静かに削除する方法

PowerShellを使用して、操作の確認を求めずにファイルを含むディレクトリを削除することは可能ですか?

190
hsz
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
290
Michael Price

から PowerShellで強制的な回答を削除 :help Remove-Itemのコメント:

このコマンドレットのRecurseパラメーターは正しく機能しません

回避策は次のとおりです。

Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse

その後、フォルダ自体を削除します

Remove-Item $Destination -Force 
53

これは私のために働いた:

Remove-Item $folderPath -Force  -Recurse -ErrorAction SilentlyContinue

したがって、フォルダはそこにあるすべてのファイルとともに削除され、フォルダパスが存在しない場合でもエラーにはなりません。

30
necrifede

フォルダなしでコンテンツを削除するには、次のようにします。

Remove-Item "foldertodelete\*" -Force -Recurse
9

2018年更新

現在のバージョンのPowerShell(Windows 10 1809でv5.1でテスト済み)では、より単純なUnix構文のrm -R .\DirNameを使用して、ディレクトリ.\DirNameをその中に含まれる可能性のあるすべてのサブディレクトリおよびファイルと共にサイレントに削除できます。実際、PowerShellでは、多くの一般的なUnixコマンドがLinuxコマンドラインと同じように機能します。

8
divenex

rm -Force -Recurse -Confirm:$false $directory2DeletePowerShell ISE では機能しませんでしたが、通常のPowerShell CLIを介して機能しました。

これが役に立つことを願っています。それは私にバナナを駆り立てました。

4
Flightdeck73

以下はMichael Freidgeimの答えをコピー&ペーストして実装したものです。

function Delete-FolderAndContents {
    # http://stackoverflow.com/a/9012108

    param(
        [Parameter(Mandatory=$true, Position=1)] [string] $folder_path
    )

    process {
        $child_items = ([array] (Get-ChildItem -Path $folder_path -Recurse -Force))
        if ($child_items) {
            $null = $child_items | Remove-Item -Force -Recurse
        }
        $null = Remove-Item $folder_path -Force
    }
}
2
user2426679

$LogPath = "E:\" # Your local of directories $Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "grav"} # Your keyword name directories

foreach ($Folder in $Folders) { $Item = $Folder.FullName Write-Output $Item Remove-Item $Item -Force -Recurse -ErrorAction SilentlyContinue }

0
Anderson Braz

私のディレクトリはC:\ usersにあったので、私は自分のpowershellを管理者として実行しなければなりませんでした、

del ./[your Folder name] -Force -Recurse

このコマンドは私のために働いた。

0
Omkar Agrawal

フォルダーをオブジェクトとして持っている場合、次のコマンドを使用して同じスクリプトで作成したとしましょう。

$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"

次に、同じスクリプトでこのように削除できます

$folder.Delete($true)

$ true-再帰的な削除の状態

0
$LogPath = "E:\" # Your local of directories
$Folders = Get-Childitem $LogPath -dir -r | Where-Object {$_.name -like "*temp*"}
foreach ($Folder in $Folders) 
{
    $Item =  $Folder.FullName
    Write-Output $Item
    Remove-Item $Item -Force -Recurse
}
0
Anderson Braz