Delete folder if it exists in PowerShell

In my PowerShell script I'm trying to delete a folder, but only if it exists:

if (Test-Path $folder) { Remove-Item$folder -Recurse; }


I find myself repeating this combination of cmdlets quite a few times, and wished I had something like this:

# Pseudo code:
Remove-Item $folder -Recurse -IgnoreNonExistentPaths  Is there a way to do something like that? A different command, or an option I've missed from the Remove-Item documentation perhaps? Or is the only way to DRY out this bit of code to write my own cmdlet that combines Test-Path and Remove-Item? • You may be looking for alias. – Mast May 11 '15 at 9:55 • @Mast, an alias is just an alternative name for a command. You can't specify parameters or anything in an alias definition. – Dangph May 12 '15 at 0:53 3 Answers I assume you're just trying to avoid the error message in case it doesn't exist. What if you just ignore it: Remove-Item$folder -Recurse -ErrorAction Ignore


If that's not what you want, I would recommend writing your own function:

function Remove-ItemSafely {
[CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter( Mandatory=$true,
ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true
)]
[String[]]
$Path , [Switch]$Recurse
)

Process {
foreach($p in$Path) {
if(Test-Path $p) { Remove-Item$p -Recurse:$Recurse -WhatIf:$WhatIfPreference
}
}
}
}

• -ErrorAction Ignore would also ignore security errors. – jpmc26 Sep 7 '18 at 19:55

It is better to use pipeline syntax. If there are no files, then nothing will happen:

Get-ChildItem $folder -Recurse | Remove-Item  • The -Recurse should be on Remove-Item if you want it to work correctly, otherwise the directories won't be deleted unless they have no files inside. Even that way though, this won't delete $folder, only its contents, so it's good but subtly different. – briantist Feb 8 '18 at 14:23
• does not delete an empty $folder – arberg Jun 15 '18 at 12:39 • Sorting the items by full path and then reversing the list would ensure that children get deleted before their parents, preventing nasty "Are you sure?" prompts. – jpmc26 Sep 7 '18 at 19:57 This will delete an empty folder as well and still propagates errors if files cannot be deleted Get-childItem .idea\caches -ErrorAction SilentlyContinue | Remove-Item -Recurse  The most correct option for exceptions would be the if (test-path$p) { rm \$p } version