PowerShell删除最后一个子文件夹

时间:2015-11-03 09:50:35

标签: powershell powershell-v2.0 powershell-v3.0

有没有办法如何使用PowerShell删除最后一个空文件夹?
示例:我有一个文件夹结构

..- mainFolder
...................- subFolder1
........................................- a
........................................- b
........................................- c
..................- subFolder2
........................................- a
........................................- b

每天晚上使用robocopy我将所有内容复制到另一台服务器后,我应该删除所有最后的子文件夹( a,b,c等... )。

使用/ MUVE删除“ subFolder1 ”& “ subFolder2 ”但他们应该留在那里
(如果我删除文件夹“a”,“b”,“c”,“subFolder1”也是空的,所以我不能删除所有空文件夹。)

我无法使用/ FX,我不知道文件夹的名称只是根目录路径
“C:\ SharedFolders \”。我知道应该删除的文件夹是第3级。

2 个答案:

答案 0 :(得分:2)

您可以将Get-ChildItem cmdlet与5开关一起使用来检索所有文件夹,使用Test-Path cmdlet过滤空文件夹,最后使用Remove-Item删除文件夹:

-Directory

这将仅删除最后一个空文件夹,结果:

Get-ChildItem 'C:\SharedFolders' -Directory -Recurse | 
  where { -not (Test-Path (Join-Path $_.FullName '*')) } | 
  Remove-Item

答案 1 :(得分:2)

您可以使用Get-ChildItem -Recurse检索所有文件夹,然后调用目录对象上的GetFiles()GetDirectories()方法以确定它们是否为空:

$EmptyDirs = Get-ChildItem C:\path\to\mailFolder -Directory -Recurse | Where {-not $_.GetFiles() -and -not $_.GetDirectories()}
# and then remove those
$EmptyDirs | Remove-Item