如何在Windows CMD/PowerShell中用ImageMagick批量合成同前缀图片?
批量合成同名前缀PNG图片(Windows CMD/PowerShell实现)
Windows CMD 脚本方案
创建一个.bat文件,粘贴以下内容后放在图片所在文件夹运行:
@echo off setlocal enabledelayedexpansion set "prefixes=" :: 提取所有唯一前缀(基于_a.png文件) for %%f in (*_a.png) do ( set "fname=%%~nf" set "prefix=!fname:_a=!" if not "!prefixes:!prefix!=!"=="!prefixes!" set "prefixes=!prefixes!!prefix! " ) :: 逐个合成对应前缀的图片 for %%p in (%prefixes%) do ( echo 合成 %%p.png... magick composite "%%p_b.png" "%%p_a.png" "%%p.png" ) endlocal pause
脚本会自动识别所有带_a.png的前缀,去重后执行合成命令,将半透明的_b图叠加在_a图上方,输出不带后缀的目标图片。
PowerShell 脚本方案
打开PowerShell切换到图片所在文件夹,执行以下代码:
# 按前缀分组所有PNG文件 $imageGroups = Get-ChildItem -Filter *.png | Group-Object -Property { $_.BaseName -replace '_[ab]$', '' } foreach ($group in $imageGroups) { $prefix = $group.Name # 找到组内的_a和_b图片 $aImg = $group.Group | Where-Object { $_.BaseName -eq "${prefix}_a" } $bImg = $group.Group | Where-Object { $_.BaseName -eq "${prefix}_b" } if ($aImg -and $bImg) { Write-Host "正在合成 $prefix.png" magick composite $bImg.FullName $aImg.FullName "$prefix.png" } else { Write-Warning "前缀 $prefix 缺少对应 _a 或 _b 图片,跳过处理" } }
该方案会自动分组同名前缀的图片,同时检查每组是否存在完整的_a和_b文件,避免因文件缺失导致报错。
内容的提问来源于stack exchange,提问作者sparani
相关产品推荐
相关产品推荐

