使用PowerShell将视频重命名为创建时间时遇重复文件名错误
PowerShell批量重命名文件时「文件已存在」错误解决
问题根源
你遇到的错误主要来自两个点:
- 12小时制格式导致重复:代码里用了
hh(12小时制小时),上午和下午的同一时间会生成完全一样的文件名(比如凌晨2点和下午2点都会显示为02)。 - 误用修改时间而非创建时间:
LastWriteTime是文件最后被修改的时间,不是视频本身的创建时间,不同文件完全可能有相同的修改时间。
修复方案
方案1:改用24小时制+创建时间
把hh替换为HH(24小时制),同时用CreationTime(文件创建时间)代替LastWriteTime,既避免12小时制的重复问题,也更贴合你想要的「创建日期」需求:
Get-ChildItem | Rename-Item -NewName {$_.CreationTime.ToString("yyyy-MM-dd HH.mm.ss ddd") + $_.Extension}
方案2:处理极端重复场景
如果确实存在同一秒创建的文件(比如连拍的视频),可以给重复文件名加上序号,确保不会冲突:
$targetFiles = Get-ChildItem foreach ($file in $targetFiles) { $timeBase = $file.CreationTime.ToString("yyyy-MM-dd HH.mm.ss ddd") $ext = $file.Extension $newFileName = "$timeBase$ext" $index = 1 # 检查文件名是否存在,存在则加序号 while (Test-Path -Path $newFileName) { $newFileName = "$timeBase ($index)$ext" $index++ } Rename-Item -Path $file.FullName -NewName $newFileName }
额外提示
如果视频是从相机/手机拷贝到电脑的,CreationTime可能会被系统修改为拷贝时间。这种情况下需要读取视频的元数据创建时间,你可以使用ExifTool这类工具配合PowerShell实现,但日常场景中上述方案已经足够解决大部分问题。
内容的提问来源于stack exchange,提问作者sikorloa
相关产品推荐
相关产品推荐

