Antworten:
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
-ErrorAction Ignore
. Dadurch werden jedoch auch andere Fehler ausgeblendet.
Remove-Item './folder/*'
. Wenn Sie wirklich nur Dateien aller Ordner löschen möchten, können Sie alle Blätter auflisten und an das Cmdlet Remove-ItemGet-ChildItem -Recurse -File | Remove-Item
Aus PowerShell entfernen Antwort erzwingen : Hilfe Remove-Item sagt:
Der Recurse-Parameter in diesem Cmdlet funktioniert nicht ordnungsgemäß
Der Befehl zur Problemumgehung lautet
Get-ChildItem -Path $Destination -Recurse | Remove-Item -force -recurse
Und dann löschen Sie den Ordner selbst
Remove-Item $Destination -Force
Remove-Item -Recurse -Force $dir
und es funktioniert.
Get-Help Remove-Item
Dokumentation liegt, die nach dem Update-Help
Ausführen erhalten wurde ...
Das hat bei mir funktioniert:
Remove-Item $folderPath -Force -Recurse -ErrorAction SilentlyContinue
Daher wird der Ordner mit allen darin enthaltenen Dateien entfernt und es wird kein Fehler ausgegeben, wenn der Ordnerpfad nicht vorhanden ist.
Update 2018
In der aktuellen Version von PowerShell (getestet mit v5.1 unter Windows 10 1809) kann die einfachere Unix-Syntax verwendet werden rm -R .\DirName
, um das Verzeichnis .\DirName
mit allen darin enthaltenen Unterverzeichnissen und Dateien stillschweigend zu löschen . Tatsächlich funktionieren viele gängige Unix-Befehle in PowerShell genauso wie in einer Linux-Befehlszeile.
rm -R .\DirName\*
, um den Ordner zu bereinigen, ohne den Ordner selbst zu löschen
Um Inhalte ohne Ordner zu löschen, können Sie Folgendes verwenden:
Remove-Item "foldertodelete\*" -Force -Recurse
rm -Force -Recurse -Confirm:$false $directory2Delete
funktionierte nicht in der PowerShell ISE , aber es funktionierte über die reguläre PowerShell CLI.
Ich hoffe das hilft. Es trieb mich zu Bannanas.
PowerShell CLI
und nicht beim Entwickeln in gelöscht PowerShell ISE
.
Unten finden Sie eine kopierbare Implementierung der Antwort von 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
}
}
Da sich mein Verzeichnis in C: \ users befand, musste ich meine Powershell als Administrator ausführen.
del ./[your Folder name] -Force -Recurse
Dieser Befehl hat bei mir funktioniert.
del
ist ein Alias für 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
}
Wenn Sie Ihren Ordner als Objekt haben, nehmen wir an, Sie haben ihn mit demselben Befehl im selben Skript erstellt:
$folder = New-Item -ItemType Directory -Force -Path "c:\tmp" -Name "myFolder"
Dann können Sie es einfach so im selben Skript entfernen
$folder.Delete($true)
$ true - Zustände zum rekursiven Entfernen
$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
}