powershell调用.net图像类可批量无损转换图片格式,支持png→jpg等互转,需管理员权限、设置执行策略、进入目标目录后运行脚本;批处理调用mspaint.exe /pt亦可静默转换;macos用户可用预装sips命令实现格式转换。

您需要在Windows系统中不依赖第三方软件,仅用命令行快速将一批图片统一转成JPG、PNG等指定格式,且要求操作可复现、不损坏原图、不手动点击界面。
PowerShell调用.NET图像类批量转换
该方法直接调用Windows内置的System.Drawing API,真实重编码而非改后缀,支持PNG→JPG、BMP→PNG、GIF→JPG等常见互转,全程无图形界面,转换后图像质量可控。
第一步:以管理员身份运行PowerShell。右键“开始”按钮 → 选择“Windows PowerShell(管理员)”,否则可能因权限不足导致Save失败。
第二步:执行策略设置(仅首次需运行)。输入以下命令并回车:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
第三步:进入图片所在文件夹。例如图片全在D:\Photos,则输入:
cd "D:\Photos"
第四步:运行转换脚本。以下命令将当前目录所有PNG文件转为JPG,质量默认90%:
$files = Get-ChildItem *.png
foreach ($file in $files) {
$img = [System.Drawing.Image]::FromFile($file.FullName)
$newPath = [System.IO.Path]::ChangeExtension($file.FullName, ".jpg")
$img.Save($newPath, [System.Drawing.Imaging.ImageFormat]::Jpeg)
$img.Dispose()
}
【注意:脚本执行期间不要关闭PowerShell窗口,中途关闭会导致部分图片未保存】
批处理+画图静默另存(免PowerShell)
适用于禁用PowerShell策略或对.NET不熟悉的操作者。利用mspaint.exe /pt参数触发打印导出路径,本质是让画图后台调用系统打印机驱动生成JPG,无需交互。
方法一:新建批处理文件
1. 桌面新建文本文档,粘贴以下内容(以PNG转JPG为例):
@echo off
for %%i in (*.png) do (
start /wait mspaint.exe "%%i" /pt "%%~dpi%%~ni.jpg"
)
pause
2. 将文件另存为ANSI编码,名称为ConvertPNGtoJPG.bat,后缀必须是.bat。
3. 右键该.bat文件 → “属性” → 勾选“解除锁定” → 点击“确定”。【不解除锁定会导致双击无响应】
4. 把待转换的PNG文件全部放进同一文件夹,然后将该文件夹拖到ConvertPNGtoJPG.bat图标上释放——自动逐个打开→静默导出→关闭画图窗口。
方法二:直接在资源管理器地址栏执行(单次快速)
进入图片文件夹,在地址栏输入cmd回车 → 弹出命令提示符 → 输入:
for %i in (*.webp) do mspaint.exe "%i" /pt "%~dpi%~ni.jpg"
这行命令会立即启动画图并尝试导出,但需提前确认已安装WebP图像扩展,否则画图打不开WebP文件。
使用sips命令在Mac上批量转换
macOS用户无需安装任何工具,sips是系统预装的图像处理命令行工具,支持HEIC、PNG、JPG、TIFF等格式相互转换,保留EXIF和原始尺寸,输出路径可自定义。
1. 打开终端,cd进入图片所在文件夹,例如:
cd ~/Desktop/MyImages
2. 执行转换命令(将所有PNG转为JPG):
sips -s format jpeg *.png --out ./output_jpg/
3. 若目标文件夹output_jpg不存在,需先创建:
mkdir -p ./output_jpg
4. 如需控制JPG质量,添加参数:
sips -s format jpeg -s formatOptions 95 *.png --out ./output_jpg/
这一步必须指定--out路径,否则sips会覆盖原文件——【不加--out就是直接修改原图,不可逆】











