You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整PowerShell脚本以查找指定名称的空文件夹及子文件夹、删除它们并导出结果至CSV

解决方案

咱们一步步来调整你的脚本,完美实现你要的两个功能,还能导出CSV:

1. 修正文件夹筛选逻辑

你的原代码是先找所有空文件夹再挑名字是Archiv的,咱们换个更精准高效的顺序:先递归找出所有名叫Archiv的文件夹,再检查它们是不是空的。这样既能确保找到所有层级的目标文件夹,也不会做多余的判断。

调整后的获取列表代码:

$TopDir = 'C:\Users\User\Test'
$DirToFind = 'Archiv'

# 递归找所有名为"Archiv"的空文件夹
$EmptyDirList = Get-ChildItem -LiteralPath $TopDir -Directory -Recurse |
    Where-Object {
        $_.Name -eq $DirToFind -and  # 先精准匹配文件夹名,要模糊匹配就换回-match
        $_.GetFileSystemInfos().Count -eq 0  # 检查文件夹内是否完全没有文件/子文件夹
    } | Select-Object -ExpandProperty FullName

这里把-match改成-eq是为了精准匹配(避免误抓到叫ArchivBackup这类的文件夹),如果你确实需要模糊匹配,再改回-match就行。

2. 导出结果到CSV

用Export-Csv把找到的文件夹列表导出到指定路径,记得加-NoTypeInformation去掉多余的类型头,再加-Encoding UTF8避免乱码:

# 导出到CSV文件,路径你可以自己改
$EmptyDirList | Export-Csv -Path 'C:\Users\User\Documents\EmptyArchivFolders.csv' -NoTypeInformation -Encoding UTF8

3. 删除空文件夹

确认列表没问题后,咱们循环删除这些空文件夹。先加-WhatIf参数预览操作,确认没问题再去掉它执行实际删除:

# 先预览删除操作,确认后移除-WhatIf
foreach ($dir in $EmptyDirList) {
    Remove-Item -LiteralPath $dir -Force -WhatIf
}

-Force是为了确保能删除那些标记为只读的空文件夹,避免报错。

整合后的完整脚本

把上面的步骤拼起来,就是完整的可运行脚本,还加了一些友好的提示:

$TopDir = 'C:\Users\User\Test'
$DirToFind = 'Archiv'
$CsvOutputPath = 'C:\Users\User\Documents\EmptyArchivFolders.csv'

# 获取目标空文件夹列表
$EmptyDirList = Get-ChildItem -LiteralPath $TopDir -Directory -Recurse |
    Where-Object {
        $_.Name -eq $DirToFind -and
        $_.GetFileSystemInfos().Count -eq 0
    } | Select-Object -ExpandProperty FullName

# 控制台输出+导出CSV
Write-Host "找到以下空的Archiv文件夹:"
$EmptyDirList
$EmptyDirList | Export-Csv -Path $CsvOutputPath -NoTypeInformation -Encoding UTF8
Write-Host "结果已经导出到:$CsvOutputPath"

# 执行删除(先预览,确认后删去-WhatIf)
if ($EmptyDirList.Count -gt 0) {
    Write-Host "准备删除这些文件夹..."
    foreach ($dir in $EmptyDirList) {
        Remove-Item -LiteralPath $dir -Force -WhatIf
    }
} else {
    Write-Host "没找到符合条件的空文件夹哦~"
}

小说明

  • 为啥原代码可能漏检?其实逻辑上没大问题,但先找空文件夹再筛名字会做很多无用判断,而且-match如果没注意的话可能匹配到非精准名称的文件夹,换成-eq更稳妥。
  • 空文件夹检测的可靠性:$_.GetFileSystemInfos().Count -eq 0会检查文件夹里的所有文件和子文件夹,确保是真的空,比只查文件或只查子文件夹靠谱。

内容的提问来源于stack exchange,提问作者Peppino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 04:42:34