我有这个批处理文件:
for %%f in (*.svg) do (
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=256 ^
--export-png="%%~nf_256x256.png" ^
--file="{%%~f}"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=128 ^
--export-png="%%~nf_128x128.png" ^
--file="%%~f"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=64 ^
--export-png="%%~nf_64x64.png" ^
--file="%%~f"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=48 ^
--export-png="%%~nf_48x48.png" ^
--file="%%~f"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=32 ^
--export-png="%%~nf_32x32.png" ^
--file="%%~f"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=24 ^
--export-png="%%~nf_24x24.png" ^
--file="%%~f"
"C:\Program Files\Inkscape\inkscape.com" ^
-z ^
--export-background-opacity=0 ^
--export-height=16 ^
--export-png="%%~nf_16x16.png" ^
--file="%%~f"
"C:\Program Files\ImageMagick-7.0.7-Q16\magick.exe" convert %%~nf_16x16.png %%~nf_24x24.png %%~nf_32x32.png %%~nf_64x64.png %%~nf_128x128.png %%~nf_256x256.png %%~nf.ico)
它能做什么:
- 将文件夹中的每个 .svg 转换为不同大小的多个 .png
- 将这些 .png 合并为一个 .ico
使用的软件:ImageMagick 和 Inkscape。
现在我想添加另一个“命令”:
mogrify -units "PixelsPerInch" -density 96 *.png
此脚本将每个 png 的 ppi 转换为 96。这需要在转换为 .ico 之前完成
我也有这个批处理文件:
@echo off
Setlocal enabledelayedexpansion
Set "Pattern= "
Set "Replace=_"
For %%a in (*.svg) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
Pause&Exit
这会将文件名空格替换为下划线。在转换为 .png 之前,需要先执行此操作。
如何将其添加/合并到单个批处理文件中?
答案1
批处理文件旨在避免手动重复的任务,
所有不同的分辨率都可以放在另一个嵌套的文件中for
。
~
应该首先重命名,以便稍后访问修饰符
未经测试:
:: Q:\Test\2019\01\15\SO_1394446.cmd
@Echo off&SetLocal EnableDelayedExpansion
Set inkscape="C:\Program Files\Inkscape\inkscape.com"
Set magick="C:\Program Files\ImageMagick-7.0.7-Q16\magick.exe"
Set "Pattern= "
Set "Replace=_"
For %%a in ("* *.svg") Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
for %%f in (*.svg) do (
for %%r in (256 128 64 48 32 24 16) Do (
%inkscape% ^
-z ^
--export-background-opacity=0 ^
--export-height=%%r ^
--export-png="%%~nf_%%rx%%r.png" ^
--file="%%~f"
)
mogrify -units "PixelsPerInch" -density 96 %%~nf_*.png
%magick% convert %%~nf_16x16.png ^
%%~nf_24x24.png ^
%%~nf_32x32.png ^
%%~nf_48x48.png ^
%%~nf_64x64.png ^
%%~nf_128x128.png ^
%%~nf_256x256.png %%~nf.ico
)