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

PowerShell并行处理排序后文件并保留输入顺序的方法

解决PowerShell并行生成文件哈希并保持输入顺序的方案

要实现并行处理文件哈希且结果与输入文件顺序一致,核心是保留原始输入的顺序索引,并行处理时携带索引,最后按索引排序还原顺序。具体实现如下:

改进后的代码

Get-ChildItem -Recurse -Force -File `
| Sort-Object -Property 'FullName' `
| Select-Object -Property *, @{Name='Index'; Expression={[ref]$script:index++}.Value} `
| ForEach-Object -ThrottleLimit 10 -Parallel {
    $hash = & digest.exe $_.FullName
    [PSCustomObject]@{
        Index = $_.Index
        HashResult = $hash
        FilePath = $_.FullName
    }
} `
| Sort-Object -Property Index `
| Select-Object -ExpandProperty HashResult

代码说明

  • 添加顺序索引:通过Select-Object的计算属性给每个文件分配唯一递增的Index,记录原始排序后的位置。
  • 并行处理携带索引:并行块中执行digest.exe生成哈希,同时将Index、哈希结果和文件路径封装为自定义对象输出,确保每个结果都能追溯到原始位置。
  • 按索引还原顺序:收集所有并行结果后,再次按Index排序,最后提取哈希结果,得到与输入文件顺序完全一致的输出。

补充说明

如果需要同时保留文件路径和哈希的对应关系,可以去掉最后一步的Select-Object -ExpandProperty HashResult,直接使用包含Index、HashResult和FilePath的对象集合,方便后续关联处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 20:31:03