"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi ne puis-je pas exécuter des commandes ImageMagick complexes dans Powershell, mais elles fonctionnent dans CMD ?

Pourquoi ne puis-je pas exécuter des commandes ImageMagick complexes dans Powershell, mais elles fonctionnent dans CMD ?

Publié le 2024-11-08
Parcourir:694

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

La commande ImageMagick ne peut pas être exécutée dans Powershell mais s'exécute sans problème dans la fenêtre cmd

En essayant d'utiliser les commandes ImageMagick, les utilisateurs ont rencontré des difficultés pour les exécuter dans les fenêtres Powershell. Les commandes s'exécutent de manière transparente dans les fenêtres cmd. Les tentatives pour résoudre le problème en ajoutant des barres obliques inverses avant les parenthèses ont également échoué. Les enquêtes révèlent que la directive magick est effectivement incluse dans les variables d'environnement.

Malgré l'incapacité d'exécuter des commandes complexes dans Powershell, les commandes simples s'exécutent sans problème. Cela suggère que le problème réside spécifiquement dans les commandes complexes.

Aperçu des citations et des citations dans les commandes ImageMagick

ImageMagick offre une vaste gamme d'options et de fonctionnalités, ce qui nécessite une attention particulière aux citations et aux échappements lorsque exécuter des commandes dans divers environnements, notamment :

  • Bash/Unix/Linux Shells : Bash interprète des caractères spécifiques, tels que # pour les couleurs hexadécimales et les parenthèses pour les sous-processus, nécessitant un échappement ou une syntaxe alternative.
  • Fichiers Windows CMD32/BATCH : Les caractères tels que les parenthèses, les symboles inférieurs et supérieurs à et les signes de pourcentage doivent être échappés pour éviter toute confusion avec la syntaxe du shell.
  • Powershell : Les parenthèses et les caractères de continuation de ligne nécessitent un échappement avec des guillemets pour une exécution correcte des commandes.

Exemples spécifiques de syntaxe de commande pour différents environnements

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

Invocation de commandes multiplateformes

Pour éviter les problèmes potentiels résultant de contraintes de syntaxe spécifiques à l'environnement, une approche indépendante de la plate-forme implique l'utilisation de scripts. Les commandes peuvent être contenues dans un fichier avec une extension ".mgk", et ImageMagick peut l'exécuter directement, évitant ainsi le besoin d'interprétation du shell et les problèmes de citation :

script.mgk:

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

Invocation :

magick -script script.mgk

En employant cette technique, le shell reste indépendant des symboles et des caractères utilisés dans le script, garantissant une exécution transparente dans différents environnements.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3