首頁  >  文章  >  後端開發  >  為什麼我無法在 Powershell 中執行複雜的 ImageMagick 命令,但它們可以在 CMD 中運行?

為什麼我無法在 Powershell 中執行複雜的 ImageMagick 命令,但它們可以在 CMD 中運行?

Linda Hamilton
Linda Hamilton原創
2024-10-25 08:57:02831瀏覽

Why Can't I Run Complex ImageMagick Commands in Powershell, But They Work in CMD?

ImageMagick 命令無法在Powershell 中運行,但在cmd 視窗中運行沒有問題

在嘗試使用ImageMagick 命令時,用戶在Powershell 視窗中執行它們時遇到到了挑戰。這些命令在 cmd 視窗中無縫運行。嘗試在括號前添加反斜線來解決該問題也沒有成功。調查顯示,magick指令確實包含在環境變數中。

儘管無法在Powershell中執行複雜的命令,但簡單的命令執行沒有問題。這顯示問題出在複雜的命令上。

深入了解 ImageMagick 命令中的引用和引用

ImageMagick 提供了大量的選項和功能,因此在使用時需要仔細注意引用和轉義。在各種環境中執行命令,包括:

  • Bash/Unix/Linux Shell: Bash 解釋特定字符,例如# 表示十六進位顏色,括號表示子進程,需要轉義或替代語法。
  • Windows CMD32/BATCH 檔案: 括號、小於和大於符號以及百分號等字元需要轉義,以防止與 shell 語法混淆。
  • Powershell:括號和行連續字元需要使用反引號轉義才能正確執行指令。

不同環境的指令語法的具體範例

Bash :

magick IMAGE1.PNG \
   \( IMAGE2.PNG -resize 50% -fill '#ff0000' -colorize 100% \) \
  -composite -transparent 'hsl(40,50,60)' result.png

Windows CMD32:

magick IMAGE1.PNG ^
   ( IMAGE2.PNG -resize 50%% -fill "#ff0000" -colorize 100% ) ^
  -composite -transparent "hsl(40,50,60)" result.png

Powershell:

magick IMAGE1.PNG `
   `( IMAGE2.PNG -resize 50% -fill "#ff0000" -colorize 100% `) `
  -composite -transparent "hsl(40,50,60)" result.png
跨-平台命令調用

為了避免因特定於環境的語法限製而引起的潛在問題,獨立於平台的方法涉及利用腳本。指令可以包含在副檔名為「.mgk」的檔案中,ImageMagick 可以直接執行它,繞過shell 解釋和引用問題:

script.mgk:

-size 640x480 xc:#ffff00
( foreground.png -resize 50% )
-gravity center -composite -write result.png

呼叫:

magick -script script.mgk
透過採用此技術,shell 對腳本中使用的符號和字元保持不可知,從而確保跨不同環境的無縫執行。

以上是為什麼我無法在 Powershell 中執行複雜的 ImageMagick 命令,但它們可以在 CMD 中運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn