Thêm lệnh ImageMagick mới trong tệp bó hiện có


0

Tôi có tập tin lô này:

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)

Những gì nó làm:

  1. Chuyển đổi mọi .svg trong thư mục thành nhiều .png's ở các kích cỡ khác nhau
  2. Kết hợp những .png này thành một .ico

Phần mềm được sử dụng: ImageMagick và Inkscape.

Bây giờ có một 'lệnh' khác tôi muốn thêm:

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

Kịch bản lệnh này chuyển đổi ppi của mỗi png thành 96. Điều này cần xảy ra trước khi chuyển đổi sang .ico

Tôi cũng có tập tin lô này:

@echo off
Setlocal enabledelayedexpansion

Set "Pattern= "
Set "Replace=_"

For %%a in (*.svg) Do (
    Set "File=%%~a"
    Ren "%%a" "!File:%Pattern%=%Replace%!"
)

Pause&Exit

Điều này thay thế không gian tên tệp bằng một dấu gạch dưới. Mà cần phải xảy ra lúc đầu trước khi chuyển đổi sang .png.

Làm cách nào để thêm / kết hợp tệp này vào một tệp bó?

Câu trả lời:


1

Các tệp hàng loạt được dự định để tránh các tác vụ lặp lại thủ công,
tất cả các độ phân giải khác nhau có thể được đặt trong một lồng khác for.

Việc đổi tên phải là đầu tiên để cho phép truy cập vào ~ sửa đổi sau

Chưa được kiểm tra:

:: 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
)

Cảm ơn câu trả lời của bạn! Khi tôi chạy tệp này dưới dạng một tệp bó trong thư mục, các Svss được đặt, CMD mở trong một giây ngắn gọn và sau đó đóng lại ngay lập tức.
Gerlof Leuhof

Để gỡ lỗi một lô luôn khởi động nó trong một cửa sổ cmd mở để có thể thấy các thông báo lỗi. Tôi có một lỗi ngớ ngẩn, thiếu làm, sửa
LotPings

Cảm ơn! Bây giờ nó đang chạy nhưng tôi nhận được vô số lỗi. Tôi đã dán một phần của nó ở đây: pastebin.com/te9wkbGp . Đây là những lỗi nó cung cấp cho mỗi tệp.
Gerlof Leuhof

Xin lỗi tôi tò mò là họ {} đến từ, loại bỏ.
LotPings

1
Nó đã bị mất trong của bạn mẫu, thêm nó.
LotPings
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.