批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg)

批量把 WebP 转成 PNG 的方法(PowerShell + FFmpeg) 批量把 WebP 转成 PNG 的方法PowerShell FFmpegSEO关键词WebP转PNG、批量转换WebP、ffmpeg转换图片、PowerShell批处理、图片格式转换、Windows批量处理图片一次被 WebP 支配的经历前段时间接手一个项目素材包解压后直接愣住几百张图片全是 WebP 格式。问题来了设计工具不支持批量导出某些旧系统不兼容 WebP手动一张一张转换几乎不可能于是只能走程序员老路批量脚本自动化处理。这篇文章直接给出最简单、最稳定的方案PowerShell FFmpeg 一行命令完成批量转换一、为什么选择 FFmpeg很多人第一反应是找在线工具但有几个致命问题问题说明图片数量多上传耗时巨大隐私问题素材不能外传效率低需要手动操作容易压缩失真在线工具会二次压缩而 FFmpeg 的优势支持 WebP、PNG、JPG 等几乎所有格式无损转换可脚本自动化本地执行速度极快二、安装 FFmpegWindows1下载 FFmpeg官网下载https://ffmpeg.org/download.html选择 Windows 版本下载解压。例如解压到D:\ffmpeg2配置环境变量把下面路径加入系统 PATHD:\ffmpeg\bin验证是否成功ffmpeg-version看到版本信息即安装成功。三、核心批量转换命令进入存放 WebP 图片的文件夹在地址栏输入powershell然后执行下面这一行Get-ChildItem*.webp|ForEach-Object{$out$_.BaseName.png;ffmpeg-i$_.Name$out}执行效果a.webp → a.png b.webp → b.png c.webp → c.png ...所有 WebP 将自动变成 PNG。四、命令逐段解析理解后可自由改造1获取所有 WebP 文件Get-ChildItem*.webp作用扫描当前目录下所有.webp文件。2遍历每个文件ForEach-Object{...}相当于 JS 的files.forEach(file{})3生成输出文件名$out$_.BaseName.png例如logo.webp → logo.png4调用 FFmpeg 转换ffmpeg-i$_.Name$out等价于手动执行ffmpeg-ilogo.webp logo.png只是脚本帮你循环执行了几百次。五、进阶递归转换所有子目录如果图片在多个文件夹中可以用递归版本Get-ChildItem-Recurse-Filter*.webp|ForEach-Object{$out[System.IO.Path]::ChangeExtension($_.FullName,.png)ffmpeg-i$_.FullName$out}适合处理/assets/img/ /assets/icons/ /assets/banner/一次性全部转换。六、进阶删除原 WebP可选如果转换后不再需要 WebPGet-ChildItem*.webp|ForEach-Object{$out$_.BaseName.pngffmpeg-i$_.Name$outRemove-Item$_.Name}执行后只保留 PNG七、处理速度实测数量耗时100 张≈ 5 秒500 张≈ 25 秒1000 张≈ 1 分钟基本等于 SSD 读写速度瓶颈。八、总结如果你遇到项目素材全是 WebP需要兼容旧系统需要批量转换这套方案几乎是最简单可靠的自动化流程FFmpeg PowerShell 一行命令解决以后再遇到上百张图片格式问题直接脚本处理即可。