Відповіді:
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
-ErrorAction Ignore
, хоча це також приховає інші помилки.
Remove-Item './folder/*'
. Якщо ви дійсно хочете очистити лише файли з усіх папок, ви можете перелічити всі аркуші та передати їх командлету Remove-ItemGet-ChildItem -Recurse -File | Remove-Item
З PowerShell видалити силу відповіді : довідка 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
документацію, отриману після Update-Help
запуску ...
Оновлення 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 CLI.
Я сподіваюся, що це допомагає. Це водило мене бананами.
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: \ користувачів, мені довелося запустити свою повноваження як адміністратор,
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
}