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

PowerShell中‘Media created’对应变量是什么?用于批量重命名MOV文件

批量重命名MOV文件为媒体创建时间(避免重复)

要获取MOV文件的「Media Created」元数据,PowerShell的FileInfo对象没有直接对应的属性,需要通过Windows Shell对象读取该媒体属性。以下是修改后的代码,同时解决了重复命名的问题:

# 获取当前目录下的所有MOV文件,按媒体创建时间排序
$files = Get-ChildItem -Filter *.mov | Sort-Object {
    $shell = New-Object -ComObject Shell.Application
    $folder = $shell.Namespace($_.DirectoryName)
    $file = $folder.ParseName($_.Name)
    # 提取Media Created属性(Windows Shell属性ID固定为12)
    [DateTime]$folder.GetDetailsOf($file, 12)
}

# 按媒体创建时间分组,处理重复命名
$files | Group-Object {
    $shell = New-Object -ComObject Shell.Application
    $folder = $shell.Namespace($_.DirectoryName)
    $file = $folder.ParseName($_.Name)
    [DateTime]$folder.GetDetailsOf($file, 12)
} | ForEach-Object {
    $index = 1
    $group = $_
    $group.Group | ForEach-Object {
        $mediaCreated = [DateTime]$group.Name
        # 格式化时间,重复文件添加序号后缀
        $newName = if ($group.Count -eq 1) {
            $mediaCreated.ToString("yyyy-MM-dd hh.mm.ss ddd") + $_.Extension
        } else {
            $mediaCreated.ToString("yyyy-MM-dd hh.mm.ss ddd") + " ($index)" + $_.Extension
        }
        Rename-Item -Path $_.FullName -NewName $newName -WhatIf
        $index++
    }
}

代码说明:

  • 读取媒体创建时间:通过Shell.Application的GetDetailsOf方法,属性ID12对应Windows系统中的「Media Created」属性。
  • 排序与分组:先按媒体创建时间对文件排序,再将同一时间的文件分组,从根源避免重命名冲突。
  • 重复处理逻辑:同一时间点的文件会自动添加(1)、(2)这类序号后缀。
  • -WhatIf参数:默认仅预览重命名操作,确认逻辑无误后删除该参数即可执行实际重命名。

额外验证(可选):

若不确定系统中属性ID12是否对应「Media Created」,可运行以下代码查询所有Shell属性的ID与名称对应关系:

$shell = New-Object -ComObject Shell.Application
$folder = $shell.Namespace("你的目标文件目录路径")
for ($i = 0; $i -lt 200; $i++) {
    Write-Host "$i : $($folder.GetDetailsOf($folder.Items, $i))"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:41:02