Maison  >  Article  >  développement back-end  >  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 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-25 08:57:02831parcourir

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'impossibilité 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érieur et supérieur à 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

Cross- Invocation de commandes de plate-forme

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, en évitant le besoin d'interprétation du shell et en citant les problèmes :

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn