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

PowerShell脚本异常:如何实现每个子目录仅保留一个随机TXT文件?

每个子目录仅保留一个随机TXT文件的PowerShell解决方案

原脚本的问题在于:它会递归收集所有子目录的TXT文件并放入一个整体列表,仅跳过列表的第一个文件后删除其余所有文件——这就导致只有第一个被遍历到的TXT文件保留,其他子目录的所有TXT都会被全部删除,完全不符合需求。

要实现每个子目录单独保留一个随机TXT文件,需要按目录分组处理,正确脚本如下:

Get-ChildItem -Path "C:\New" -Recurse -Include *.txt | 
    Group-Object Directory | 
    ForEach-Object {
        # 从当前目录的所有TXT文件中随机选一个保留
        $keepFile = $_.Group | Get-Random
        # 删除当前目录中除保留文件外的所有TXT(-WhatIf用于预览操作,确认后可移除)
        $_.Group | Where-Object { $_ -ne $keepFile } | Remove-Item -WhatIf
    }

脚本说明:

  • Group-Object Directory:将所有TXT文件按所在的子目录分组,确保每个组对应一个子目录下的全部TXT文件
  • Get-Random:从当前目录的文件组中随机挑选一个文件作为保留对象
  • Where-Object { $_ -ne $keepFile }:筛选出当前目录中需要删除的文件(除保留文件外的所有TXT)
  • -WhatIf:这是安全验证参数,执行时只会显示将要删除的文件,不会实际执行删除操作。确认预览结果符合预期后,再移除该参数执行真实删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:40:26