Ответы:
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
-ErrorAction Ignore
, хотя это также скроет другие ошибки.
Remove-Item './folder/*'
. Если вы действительно хотите очистить только файлы всех папок, вы можете перечислить все листья и Get-ChildItem -Recurse -File | Remove-Item
Из PowerShell удалите принудительный ответ : help Remove-Item говорит:
Параметр Recurse в этом командлете не работает должным образом
Команда для обхода
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
А затем удалите саму папку
Remove-Item $Destination -Force
Remove-Item -Recurse -Force $dir
и это работает.
Get-Help Remove-Item
документации Windows 10, полученной после Update-Help
запуска ...
Это сработало для меня:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
Таким образом, папка удаляется со всеми файлами в ней, и она не выдает ошибку, если путь к папке не существует.
2018 Обновление
В текущей версии PowerShell (протестировано с v5.1 в Windows 10 1809) можно использовать более простой синтаксис Unix rm -R .\DirName
для автоматического удаления каталога .\DirName
со всеми подкаталогами и файлами, которые он может содержать. На самом деле многие общие команды Unix работают в PowerShell так же, как и в командной строке Linux.
rm -R .\DirName\*
для очистки папки, не удаляя саму папку
Для удаления содержимого без папки вы можете использовать следующее:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete
не работал в PowerShell ISE , но работал через обычный интерфейс командной строки PowerShell.
Надеюсь, это поможет. Это сводило меня с ума.
PowerShell CLI
а не при разработке PowerShell ISE
.
Ниже приведена копируемая реализация ответа Михаила Фрейдгейма
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
}
}
Так как мой каталог был в C: \ users, я должен был запустить мой powershell от имени администратора,
del ./[your Folder name] -Force -Recurse
эта команда работала для меня.
del
это псевдоним для Remove-Item
.
$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
}
Если у вас есть папка как объект, допустим, что вы создали ее в том же сценарии с помощью следующей команды:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
Тогда вы можете просто удалить его в том же сценарии
$folder.Delete($true)
$ true - состояния для рекурсивного удаления
$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
}
Это сработало для меня:
Remove-Item C:\folder_name -Force -Recurse