如何将Linux/Ubuntu下批量清除MP4文件元数据的FFmpeg命令转换为Windows命令?
如何将Linux/Ubuntu下批量清除MP4文件元数据的FFmpeg命令转换为Windows命令?
嘿,我来帮你把这条Linux下的批量处理命令转换成Windows能用的版本~先给你拆解下原命令的核心逻辑:创建一个叫Fertig的文件夹,然后遍历当前目录下所有.mp4文件,用ffmpeg清除每个文件的元数据(-map_metadata -1),同时直接复制音视频流保证无损(-c:v copy -c:a copy),最后把处理好的文件存到Fertig文件夹里。
下面分两种常用的Windows终端场景给你对应的命令:
1. 适用于CMD命令提示符的版本
如果你习惯用CMD,可以用这条批处理命令:
:: 创建Fertig文件夹,忽略已存在的错误提示 mkdir Fertig >nul 2>&1 :: 遍历所有mp4文件,调用ffmpeg处理 for %%f in (*.mp4) do ffmpeg -i "%%f" -map_metadata -1 -c:v copy -c:a copy "Fertig\%%f"
小提示:如果是直接在CMD窗口里输入(不是保存成
.bat脚本),把%%f改成%f就行;如果你的ffmpeg.exe没加到系统环境变量里,记得把ffmpeg换成完整路径,比如"C:\Program Files\ffmpeg\bin\ffmpeg.exe"。
2. 适用于PowerShell的版本
如果用PowerShell的话,写法更贴近Linux的风格:
# 创建Fertig文件夹,已存在则跳过 New-Item -ItemType Directory -Name Fertig -Force | Out-Null # 遍历mp4文件并批量处理 Get-ChildItem -Filter *.mp4 | ForEach-Object { ffmpeg -i $_.FullName -map_metadata -1 -c:v copy -c:a copy "Fertig\$($_.Name)" }
同样,如果
ffmpeg不在环境变量里,替换成完整路径即可,比如"C:\Program Files\ffmpeg\bin\ffmpeg.exe"。
关键差异说明
- Windows里的路径分隔符是反斜杠
\,而Linux是正斜杠/,所以输出路径要改成Fertig\%%f或者Fertig\$($_.Name) - CMD的for循环语法和Linux的shell循环不一样,批处理脚本里要用双百分号
%%,直接在CMD窗口用单百分号% - PowerShell的文件遍历用
Get-ChildItem,变量引用用$_.开头的属性
备注:内容来源于stack exchange,提问作者Markus Scheifinger
相关产品推荐
相关产品推荐

