เพิ่มคำสั่ง ImageMagick ใหม่ในแบตช์ไฟล์ที่มีอยู่


0

ฉันมีไฟล์ชุดนี้:

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)

มันทำอะไร:

  1. แปลง. svg ทุกรายการในโฟลเดอร์เป็น. png หลายรายการในขนาดต่างๆ
  2. รวม. png เหล่านี้ไว้ใน. ico เดียว

ซอฟต์แวร์ที่ใช้: ImageMagick และ Inkscape

ขณะนี้มี 'คำสั่ง' อื่นที่ฉันต้องการเพิ่ม:

mogrify -units "PixelsPerInch" -density 96 *.png

สคริปต์นี้แปลง ppi ของทุก png เป็น 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
)

ขอบคุณสำหรับ anwser ของคุณ! เมื่อฉันเรียกใช้สิ่งนี้เป็นไฟล์แบตช์ในโฟลเดอร์ที่มี svg อยู่ CMD จะเปิดขึ้นชั่วครู่ที่สองจากนั้นปิดทันที
Gerlof Leuhof

ในการดีบักแบตช์เริ่มต้นในหน้าต่าง cmd ที่เปิดอยู่เสมอเพื่อดูข้อความแสดงข้อผิดพลาด ฉันได้รับข้อผิดพลาดโง่หายไปทำแก้ไข
LotPings

ขอบคุณ! มันกำลังทำงานอยู่ แต่ฉันได้รับข้อผิดพลาดมากมาย ฉันวางส่วนหนึ่งของมันที่นี่: pastebin.com/te9wkbGp นี่เป็นข้อผิดพลาดที่เกิดขึ้นกับแต่ละไฟล์
Gerlof Leuhof

ขออภัยฉันอยากรู้ว่าคนเหล่านั้น{}มาจากไหนถูกย้ายออก
LotPings

1
แม่แบบของคุณขาดหายไปเพิ่ม
LotPings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.