«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я не могу запускать сложные команды ImageMagick в Powershell, но они работают в CMD?

Почему я не могу запускать сложные команды ImageMagick в Powershell, но они работают в CMD?

Опубликовано 8 ноября 2024 г.
Просматривать:809

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: Bash интерпретирует определенные символы, такие как # для шестнадцатеричных цветов и круглые скобки для подпроцессов, требуя экранирования или альтернативного синтаксиса.
  • Файлы Windows CMD32/BATCH: Символы, такие как круглые скобки, символы меньше и больше, а знаки процентов необходимо экранировать, чтобы избежать путаницы с синтаксисом оболочки.
  • 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 может выполнять их напрямую, минуя необходимость интерпретации оболочки и проблем с кавычками:

script.mgk:

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

Вызов:

magick -script script.mgk

При использовании этой техники оболочка остается не зависит от символов и символов, используемых в сценарии, что обеспечивает плавное выполнение в различных средах.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3