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

如何用PowerShell从指定文件列表计算文件总大小?

解决PowerShell计算列表文件总大小的问题

你遇到的问题主要是两个点:一是直接用Get-Content读取列表文件时,没有正确解析那些带双引号的文件路径;二是Measure-Object的参数用法有误。下面给你一套能得到预期结果的解决方案:

问题分析

你的JPGS.LST里的文件路径是用双引号包裹的,直接用Get-Content读取会把整行内容当成单个字符串,而不是拆分出每个独立的文件路径。另外,原脚本里Measure-Object -Property Length -Sum Length的写法不正确,-Sum是开关参数,不需要再指定Length。

正确的PowerShell脚本

# 定义列表文件的路径
$Listfile = "JPGS.LST"

# 读取文件内容,提取所有带双引号的有效文件路径
$filePaths = (Get-Content $Listfile -Raw) -split '"' | Where-Object { $_ -match '\S' }

# 计算所有文件的总字节数
$totalBytes = ($filePaths | ForEach-Object { (Get-Item $_).Length } | Measure-Object -Sum).Sum

# 将字节数格式化为易读的MB单位(保留1位小数)
$totalSize = "{0:N1} MB" -f ($totalBytes / 1MB)

# 输出结果
$totalSize

脚本解释

  1. 读取并解析路径:
    • 使用-Raw参数把整个文件内容读取为单个字符串,方便统一拆分双引号。
    • -split '"'按双引号分割字符串,再用Where-Object { $_ -match '\S' }过滤掉空行或纯空白的元素,得到每个有效的文件路径。
  2. 计算总大小:
    • 遍历每个路径,用Get-Item获取文件对象并读取Length属性(文件大小,单位字节)。
    • 用Measure-Object -Sum计算所有字节数的总和。
  3. 格式化输出:
    • 把总字节数除以1MB(PowerShell内置的单位常量,等于1048576字节),再用格式化字符串保留1位小数,得到类似12.5 MB的结果。

优化补充(处理不存在的文件)

如果列表里可能有不存在的文件,可以加个判断跳过这些文件并给出警告:

$totalBytes = ($filePaths | ForEach-Object { 
    if (Test-Path $_ -PathType Leaf) {
        (Get-Item $_).Length 
    } else {
        Write-Warning "无法找到文件: $_"
        0
    }
} | Measure-Object -Sum).Sum

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:04