如何用PowerShell调用ffmpeg转换FLAC为MP3并保留原文件修改日期
需求可直接实现,无需额外第三方工具,仅通过PowerShell原生的文件属性操作配合你正在使用的ffmpeg即可完成,单次执行就能同时处理所有6000个文件的转码+修改日期同步。
优化后的批量处理命令
Get-ChildItem -Filter *.flac | ForEach-Object { # 生成对应mp3文件路径,避免文件名含flac字符时替换错误 $mp3Path = Join-Path $_.DirectoryName ($_.BaseName + '.mp3') # 执行ffmpeg转码,-y参数表示自动覆盖已存在的mp3,不需要可删除 ffmpeg -i $_.FullName -c:v copy -b:a 320k $mp3Path -y # 同步修改日期为原flac文件的修改时间 (Get-Item $mp3Path).LastWriteTime = $_.LastWriteTime }
如果你想沿用原有替换写法,也可以使用以下版本
dir *.flac | foreach { $mp3Path = $_.FullName.Replace('.flac', '.mp3') ffmpeg -i $_.FullName -c:v copy -b:a 320k $mp3Path -y (Get-Item $mp3Path).LastWriteTime = $_.LastWriteTime }
命令说明
- 转码逻辑和你原有逻辑完全一致,专辑封面仍然会保留不会被转码
- 时间同步逻辑直接调用PowerShell原生的文件属性赋值,性能足够处理6000个文件的批量操作
- 路径生成逻辑做了小优化,避免文件名中间带有flac字符串时出现误替换的问题
内容的提问来源于stack exchange,提问作者user5894146
相关产品推荐
相关产品推荐

