Как спокойно удалить каталог с содержимым в PowerShell - программирование

Как спокойно удалить каталог с содержимым в PowerShell

Можно ли с помощью PowerShell удалить какой-либо каталог, содержащий файлы, без запроса подтверждения действия?

4b9b3361

Ответ 1

Remove-Item -LiteralPath "foldertodelete" -Force -Recurse

Ответ 2

От PowerShell удалить ответ на действие: help Remove-Item говорит:

Параметр Recurse в этом командлете не работает должным образом

Командой обхода является

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

И затем удалите самую папку

Remove-Item $Destination -Force 

Ответ 3

Это сработало для меня:

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

Таким образом, папка удаляется со всеми файлами там, и она не создает ошибку, если путь к папке не существует.

Ответ 4

Чтобы удалить содержимое без папки, вы можете использовать следующее:

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

Ответ 5

2018 Обновление

В текущей версии PowerShell (протестировано с v5.1 в Windows 10 1809) можно использовать более простой синтаксис Unix rm -R.\DirName для rm -R.\DirName удаления каталога .\DirName со всеми подкаталогами и файлами, которые он может содержать. На самом деле многие общие команды Unix работают в PowerShell так же, как и в командной строке Linux.

Ответ 6

rm -Force -Recurse -Confirm:$false $directory2Delete не работал в PowerShell ISE, но работал через обычный CLI PowerShell.

Надеюсь, это поможет. Это заставляло меня bannanas.

Ответ 7

Ниже приведена копировальная реализация ответа Майкла Фрейдзима

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
    }
}

Ответ 8

$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
}

Ответ 9

$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
}

Ответ 10

Так как мой каталог находился в C:\users, я должен был запустить мой powershell от имени администратора,

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

эта команда работала для меня.

Ответ 11

Если ваша папка является объектом, допустим, что вы создали ее в том же сценарии с помощью следующей команды:

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

Затем вы можете просто удалить его в том же сценарии

$folder.Delete($true)

$ true - состояния для рекурсивного удаления