2016-09-27 3 views
0

J'essaie d'exécuter une ligne de commande imagemagick dans ma fenêtre PowerShell mais cela ne fonctionne pas, si je l'exécute dans ma ligne de commande régulière, cela fonctionne.Commande Imagemagick en ligne de commande et sous Windows PowerShell

La commande ressemble à ceci:

(je ne ai pas besoin des sauts de ligne, je les ai mis juste pour que la commande est plus lisible)

convert -bordercolor none -background none -gravity center^
k1.jpg -border 5x5^
(k2.jpg k3.jpg k4.jpg -border 5x5 +append)^
(k5.jpg k6.jpg k1.jpg -border 5x5 +append)^
-append -border 5x5 -resize 720x480 output.png 

je suis l'erreur suivante si je lance dans mon powershell: (je devais traduire en anglais)

k2.jpg: le libellé « k2.jpg » n'a pas été détecté comme un nom d'une applet de commande, une fonction, un fichier de script.

Edit:

En fait, je ne ont pas besoin des pauses lignes, je les mettre juste pour que le code est plus lisible, si vous avez une suggestion sans les disjoncteurs de ligne, il est bien aswell.

Edit:

J'ai essayé la suggestion de Matt comme ceci:

convert --% -bordercolor none -background none -gravity center k1.jpg -border 5x5 (k2.jpg k3.jpg k4.jpg -border 5x5 +append) (k5.jpg k6.jpg k7.jpg -border 5x5 +append) -append -border 5x5 -resize 720x480 output.png 

et je me suis erreur suivante/message:

convert.exe: Impossible d'ouvrir l'image « (K2. jpg ': Aucun fichier ou répertoire de ce type @ error/blob.c/OpenBlob/2695. convert.exe: option non reconnue `+ append)' @ error/convert.c/ConvertImageCommand/764.

+0

Powershell utilise d'autres sauts de ligne: http://stackoverflow.com/questions/3235850/how-to-enter-a-multi-line-command –

+0

@ D.J.. merci je ne le savais pas, je n'ai pas vraiment besoin des sauts de ligne dans ma commande je les mets juste en bas pour que la commande soit plus lisible. Après avoir essayé votre suggestion, j'ai la même erreur ci-dessus. – utdev

+0

Cette deuxième erreur ne provient plus de PowerShell. Cela vient de convert.exe. Il semblerait que le paramètre d'analyse d'arrêt fonctionne comme prévu maintenant. – Matt

Répondre

1

principal problème est que PowerShell essaie de traiter ceux qui, comme PowerShell syntaxe. () indique une expression.

There are multiple ways of handling exe's in PowerShell. En fonction de votre intention et de la version de PowerShell, certaines options sont plus douloureuses que d'autres (certaines sont même déconseillées par les méthodes préférées).

La chose la plus facile à faire avec ce que vous avez montré est d'utiliser l'opérateur d'analyse syntaxique d'arrêt:

Le symbole stop-analyse syntaxique (-%), introduit dans Windows PowerShell 3.0, dirige Windows PowerShell pour ne pas interpréter l'entrée comme Commandes ou expressions Windows PowerShell.

Alors vous pouvez simplement faire ceci:

convert --% -bordercolor none -background none -gravity center.... 

Je n'ai pas un environnement pour tester ce que vous faites, mais peut-être vous pouvez utiliser des guillemets autour de ces arguments, afin PowerShell ne pensera pas à c'est tout sauf une chaîne.

"(k2.jpg k3.jpg k4.jpg -border 5x5 +append)" 
+0

Merci pour vos suggestions, j'ai d'abord essayé votre deuxième suggestion :) Malheureusement, cela n'a pas fonctionné, dois-je faire appel à votre première suggestion -% juste une fois au début ou dois-je l'appeler plus d'une fois? – utdev

+0

Une fois au début @utdev – Matt

+0

J'ai essayé votre suggestion, mais cela n'a pas fonctionné J'ai mis ma question avec la commande j'ai utilisé + erreur/message de la ligne de commande – utdev

0

Une autre approche serait de commencer le processus comme celui-ci: StartProcess -FilePath $pathToConvert -Args "-bordercolor none -background none -gravity...." -wait

cette powershell façon ne cherche pas à interpréter les ImageMagick-args

+0

Je pense que vous devez lui envoyer un tableau d'arguments. convertir pourrait ne pas aimer celui envoyé comme ça. De même, si aucune variable n'est utilisée, l'opérateur d'analyse d'arrêt fonctionnera ici. 'converti -% ....' – Matt

+0

Je guees -FilePath $ pathToConvert est pour le chemin où je reçois mes images, je navigue déjà vers ce chemin donc je suppose que je n'ai pas besoin de cette partie de la commande correcte? – utdev

+0

@Matt pourriez-vous poster votre suggestion s'il vous plaît – utdev