删除给定路径中的项目,然后递归地删除所有父项

时间:2012-05-08 16:12:07

标签: powershell powershell-v2.0

我有一条路。可以是文件的路径,可以是目录的路径。 现在我需要删除文件(如果它是文件的路径),然后检查同一文件夹中是否没有更多文件,也删除它,然后检查父文件夹等等。

如果它是目录的路径,删除目录,然后检查父项是否为空 - 也删除它,然后删除它的父项,依此类推。

3 个答案:

答案 0 :(得分:1)

此脚本将删除路径中的顶级文件夹,包括其下的所有内容。 $path变量可以指向文件或目录。

$path = "D:\temp\temp2\file.txt"
$parts = $path.Split([System.IO.Path]::DirectorySeparatorChar)

# The following will remove D:\temp and everything in it
Remove-Item (Join-Path $parts[0] $parts[1]) -Recurse

答案 1 :(得分:0)

我想通过结合这些可能来构建一些东西:

Get-ChildItem
Split-Path $path -parent  
Remove-Item 

答案 2 :(得分:0)

如果您还没有完成这项工作,这可能会对您有所帮助:

您可以使用它来查明子项目是否为文件夹

| ? {$_.PSIsContainer}

并与此相结合,您可以看到它是否为空文件夹

| ? {$_.GetFiles().Count -eq 0}
祝你好运!