web-dev-qa-db-fra.com

Comment supprimer discrètement un répertoire avec du contenu dans PowerShell

À l'aide de PowerShell, est-il possible de supprimer un répertoire contenant des fichiers sans demander confirmation de l'action?

182
hsz
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
281
Michael Price

From PowerShell remove force réponse : Help Remove-Item dit:

Le paramètre Recurse dans cette cmdlet ne fonctionne pas correctement

La solution de contournement est

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

Et puis supprimez le dossier lui-même

Remove-Item $Destination -Force 
52
Michael Freidgeim

Cela a fonctionné pour moi:

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

Ainsi, le dossier est supprimé avec tous les fichiers qu'il contient et il ne génère pas d'erreur si le chemin du dossier n'existe pas.

28
necrifede

Pour supprimer du contenu sans dossier, vous pouvez utiliser les éléments suivants:

Remove-Item "foldertodelete\*" -Force -Recurse
9
Dmitriy N. Laykom

rm -Force -Recurse -Confirm:$false $directory2Delete ne fonctionnait pas dans PowerShell ISE , mais fonctionnait via l'interface de ligne de commande PowerShell standard.

J'espère que ça aide. Cela me conduisait des bannanas.

4
Flightdeck73

Vous trouverez ci-dessous une implémentation copiable de la réponse de 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
    }
}
2
user2426679

Mise à jour 2018

Dans la version actuelle de PowerShell (testée avec la version 5.1 sur Windows 10 1809), vous pouvez utiliser la syntaxe Unix plus simple rm -R .\DirName pour supprimer de manière silencieuse le répertoire .\DirName avec tous les sous-répertoires et fichiers qu'il contient. En fait, de nombreuses commandes Unix courantes fonctionnent de la même manière dans PowerShell que dans une ligne de commande Linux.

1
divenex

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

0
Anderson Braz

Comme mon répertoire était en C:\utilisateurs, je devais exécuter mon PowerShell en tant qu’administrateur,

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

cette commande a fonctionné pour moi.

0
Omkar Agrawal

Si vous avez votre dossier comme objet, supposons que vous l'avez créé dans le même script en utilisant la commande suivante:

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

Ensuite, vous pouvez simplement l'enlever comme ceci dans le même script

$folder.Delete($true)

$ true - indique un retrait récursif

0
Dmitriy Reznikov
$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
}
0
Anderson Braz