有没有办法如何使用PowerShell删除最后一个空文件夹?
示例:我有一个文件夹结构
..- mainFolder
...................- subFolder1
........................................- a
........................................- b
........................................- c
..................- subFolder2
........................................- a
........................................- b
每天晚上使用robocopy我将所有内容复制到另一台服务器后,我应该删除所有最后的子文件夹( a,b,c等... )。
使用/ MUVE删除“ subFolder1 ”& “ subFolder2 ”但他们应该留在那里
(如果我删除文件夹“a”,“b”,“c”,“subFolder1”也是空的,所以我不能删除所有空文件夹。)
我无法使用/ FX,我不知道文件夹的名称只是根目录路径
“C:\ SharedFolders \”。我知道应该删除的文件夹是第3级。
答案 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