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

PowerShell通配符路径脚本无法删除15天以上旧文件问题排查

问题分析与解决方案

你的脚本无法正常工作的核心原因不是$folder变量不支持通配符,而是Get-ChildItem的-Path参数对路径中非最后一段的通配符处理有限。你定义的路径(比如C:\*_TEST\123*\Archive*)包含多段通配符目录,直接传入-Path无法正确枚举到真实存在的目标文件夹。

修正后的脚本

# 定义带通配符的文件夹路径模式
$folderPatterns = @(
    "C:\*_TEST\123*\Archive*",
    "C:\*_TEST\456*\ACK*\Archive*",
    "C:\*_TEST\789\Ack\Archive_Acks"
)

# 遍历每个路径模式,解析为真实存在的文件夹
foreach ($pattern in $folderPatterns) {
    # 枚举匹配模式的所有文件夹,忽略不存在的情况
    $targetFolders = Get-ChildItem -Path $pattern -Directory -ErrorAction SilentlyContinue
    if (-not $targetFolders) {
        Write-Host "未找到匹配模式的文件夹: $pattern"
        continue
    }

    # 处理每个真实文件夹
    foreach ($folder in $targetFolders) {
        Write-Host "正在处理文件夹: $($folder.FullName)"
        # 筛选并删除15天以上的旧文件
        Get-ChildItem -Path $folder.FullName -File -Recurse | Where-Object {
            $_.LastWriteTime -lt (Get-Date).AddDays(-15)
        } | ForEach-Object {
            Remove-Item $_.FullName -Force
            Write-Host "已删除: $($_.FullName)"
        }
    }
}

Write-Host "清理完成。"

关键修改说明

  • 先用Get-ChildItem -Directory解析通配符模式,得到真实存在的文件夹路径,再基于这些真实路径执行文件清理
  • 移除了路径末尾的反斜杠,避免路径解析时出现异常
  • 增加了-ErrorAction SilentlyContinue,防止因找不到匹配文件夹导致脚本中断
  • 增加了日志输出,方便排查哪些文件夹被处理、哪些未找到

注意事项

  • 测试阶段可以先注释掉Remove-Item行,改用Write-Host输出待删除文件路径,确认逻辑无误后再执行删除操作
  • 确保运行脚本的账号拥有目标文件夹的读取和删除权限
  • 如果需要处理隐藏文件,可在Get-ChildItem中添加-Force参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:52:42