С помощью PowerShell, можно ли удалить директорию, содержащую файлы без запроса на подтверждение действий?
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
От PowerShell для удаления силы ответить: помогите удалить пункт говорит:
параметр Recurse в этот командлет не работает должным образом
Команда чтобы обойти это
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
А затем удалить саму папку
Remove-Item $Destination -Force
Этот работал для меня:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
Таким образом удалить папку со всеми файлами в ней есть и он не выдает ошибку, если путь к папке не'т существует.
Обновление 2018
В текущей версии PowerShell (проверено с V5.1 на Windows 10 1809) можно использовать более простой синтаксис Unix и РМ -Р .\Каталогудалить каталог
.Каталог со всеми подкаталогами и файлами он может содержать. На самом деле много общих команд Unix работают одинаково в PowerShell в командной строке Linux.
Чтобы удалить контент без папок можно использовать следующие:
Remove-Item "foldertodelete\*" -Force -Recurse
РМ -сила -параметр Recurse параметр-confirm:$false в $directory2Delete ничего'т работать в среде ise, но он работал через регулярные PowerShell из командной строки.
Я надеюсь, что это помогает. Это было сводит меня с bannanas.
Ниже приводится копия-pasteable реализация Майкл 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
}
}
$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
}
$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
}
Поскольку мой каталог в C:\users мне пришлось бежать мой PowerShell от имени администратора,
del ./[your Folder name] -Force -Recurse
эта команда работает для меня.
Если у вас есть свой папку как объект, позвольте'ы сказать, что вы создали его в тот же скрипт с помощью следующей команды:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
Затем вы можете просто удалить его, как это в один и тот же сценарий
$folder.Delete($true)
значение $true - состояния рекурсивное удаление