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

如何在Windows文件资源管理器中为父文件夹的所有子文件夹添加时长列

给Windows文件管理器的子文件夹添加视频总时长列

以下是两种可行的方法,均能实现批量计算子文件夹内所有视频的总时长,并在文件管理器中显示该列:

方法一:用PowerShell结合Shell对象实现(Windows自带工具)

  1. 打开PowerShell,切换到你的主文件夹路径:
cd "E:\你的主文件夹路径"
  1. 运行下面的脚本,它会遍历所有子文件夹,计算其中视频的总时长,并把结果写入文件夹的「备注」属性:
$folders = Get-ChildItem -Directory
foreach ($folder in $folders) {
    $totalDuration = [timespan]::Zero
    # 这里可以添加你需要统计的视频格式
    $videos = Get-ChildItem -Path $folder.FullName -Include *.mp4,*.avi,*.mkv,*.mov -Recurse
    foreach ($video in $videos) {
        $shell = New-Object -COMObject Shell.Application
        $folderItem = $shell.Namespace($video.DirectoryName).ParseName($video.Name)
        # 27是Windows文件管理器中「时长」属性的索引,部分版本可能需调整
        $durationStr = $shell.Namespace(0).GetDetailsOf($folderItem, 27)
        if ($durationStr -match '\d+:\d+:\d+') {
            $totalDuration += [timespan]::Parse($durationStr)
        }
    }
    # 将总时长写入文件夹的「备注」属性(索引14)
    $shellFolder = New-Object -COMObject Shell.Application
    $folderObj = $shellFolder.Namespace($folder.Parent.FullName).ParseName($folder.Name)
    $shellFolder.Namespace(14).SetDetailsOf($folderObj, $totalDuration.ToString())
}
  1. 回到文件管理器,右键点击顶部的列标题栏,选择「更多...」,在弹出的列表中找到「备注」并勾选,就能看到每个子文件夹的视频总时长了。

方法二:借助MediaInfo命令行(更精准的时长统计)

如果需要更准确的时长计算(比如处理特殊编码视频),可以用MediaInfo工具:

  1. 安装MediaInfo客户端(带命令行工具),并将其命令行工具所在路径添加到系统环境变量中。
  2. 同样在PowerShell中切换到主文件夹,运行脚本:
$folders = Get-ChildItem -Directory
foreach ($folder in $folders) {
    $totalSeconds = 0
    Get-ChildItem -Path $folder.FullName -Include *.mp4,*.avi,*.mkv,*.mov -Recurse | ForEach-Object {
        # 调用MediaInfo获取视频时长(毫秒)
        $durationMs = mediainfo --Inform="General;%Duration%" $_.FullName
        if ($durationMs -match '^\d+$') {
            $totalSeconds += [int]$durationMs / 1000
        }
    }
    $totalDuration = [timespan]::FromSeconds($totalSeconds)
    # 写入文件夹备注属性
    $shell = New-Object -COMObject Shell.Application
    $folderObj = $shell.Namespace($folder.Parent.FullName).ParseName($folder.Name)
    $shell.Namespace(14).SetDetailsOf($folderObj, $totalDuration.ToString())
}
  1. 重复方法一的第三步,添加「备注」列即可查看结果。

注意事项

  • 可以根据自己的视频格式,修改脚本中的-Include参数,比如添加*.flv,*.wmv等。
  • 如果发现时长索引(27)或备注索引(14)不生效,可以自己测试:在文件管理器中选中一个视频,右键「属性」→「详细信息」,记录「时长」的位置,然后用$shell.Namespace(0).GetDetailsOf($folderItem, 索引)逐个测试找到正确值。
  • 脚本运行后按F5刷新文件管理器,即可看到更新后的备注内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:05:31