2016-09-27 2 views
0

Ich versuche, eine ImageMagick Befehlszeile in meinem Windows Powershell auszuführen, aber es funktioniert nicht, wenn ich es in meiner regulären Befehlszeile ausführen, funktioniert es.Imagemagick Befehl in der Befehlszeile und Windows Powershell

Der Befehl sieht wie folgt aus:

(Ich brauche nicht die Zeilenumbrüche, Ich habe sie einfach so, dass der Befehl mehr lesbar)

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 

ich folgende Fehlermeldung erhalten, wenn ich es laufen in mein Powershell: (ich hatte es in Englisch zu übersetzen)

k2.jpg: die Formulierung „k2.jpg“ nicht als Name eines Cmdlets, Funktion erkannt wurde, eine Skriptdatei.

Edit:

Eigentlich brauche ich nicht die Linien bricht, Ich habe sie nur so, dass der Code besser lesbar ist, wenn Sie einen Vorschlag ohne die Leitungsunterbrecher haben es gut als gut ist.

Edit:

habe ich versucht, Matt Vorschlag wie folgt aus:

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 

Und ich habe folgende Fehler/Meldung:

convert.exe: unable to open image ‚(k2. jpg ': Keine solche Datei oder kein Verzeichnis @ error/blob.c/OpenBlob/2695. convert.exe: unerkannte Option `+ append)' @ error/convert.c/ConvertImageCommand/764.

+0

Powershell verwendet andere Zeilenumbrüche: http://stackoverflow.com/questions/3235850/how-to-enter-a-multi-line-command –

+0

@ D. J. danke, ich wusste das nicht, ich brauche nicht wirklich die Zeilenumbrüche in meinem Befehl Ich habe sie einfach so abgelegt, dass der Befehl besser lesbar ist. Nachdem ich Ihren Vorschlag versucht habe, bekomme ich den gleichen Fehler oben. – utdev

+0

Dieser zweite Fehler ist nicht mehr von PowerShell. Das kommt von convert.exe. Es scheint, dass der Stop-Parsing-Parameter jetzt wie beabsichtigt funktioniert. – Matt

Antwort

1

Haupt Problem zu interpretieren ist, dass Powershell das wie Powershell zu behandeln versucht Syntax. () bezeichnet einen Ausdruck.

There are multiple ways of handling exe's in PowerShell. Abhängig von Ihrer Intention und der PowerShell-Version sind einige Optionen eher schmerzhaft als andere (manche sogar sogar eher bevorzugt).

Die einfachste Sache zu tun, was Sie gezeigt haben, ist die Stop-Parsing-Operator zu verwenden:

Das Symbol Stop-Parsing (-%), 3,0 in Windows Powershell eingeführt, leitet Windows Powershell Unterlassen Sie Eingaben als Windows PowerShell-Befehle oder -Ausdrücke zu interpretieren.

So konnte man nur diese stattdessen tun:

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

Ich habe keine, eine Umgebung zu testen, was Sie tun, aber vielleicht können Sie Anführungszeichen um diese Argumente so Powershell nicht denken es ist alles andere als eine Schnur.

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

Vielen Dank für Ihre Vorschläge, ich habe Ihren zweiten Vorschlag zuerst versucht :) leider hat es nicht funktioniert, muss ich Ihren ersten Vorschlag aufrufen -% nur einmal am Anfang oder muss ich es mehr als einmal anrufen? – utdev

+0

Einmal am Start @utdev – Matt

+0

Ich versuchte Ihren Vorschlag, aber es hat nicht funktioniert Ich udpate meine Frage mit dem Befehl ich verwendet + Fehler/Nachricht von der Befehlszeile – utdev

0

würde Ein weiterer Ansatz, den Prozess so zu starten: StartProcess -FilePath $pathToConvert -Args "-bordercolor none -background none -gravity...." -wait

diese Weise Power den imagemagick-args nicht versucht

+0

Ich denke, Sie müssen es eine Reihe von Argumenten senden. konvertieren könnte nicht so, dass man so gesendet wird. Wenn keine Variablen verwendet werden, würde der Stop-Parsing-Operator auch hier funktionieren. 'convert -% ....' – Matt

+0

I guees -FilePath $ pathToConvert ist für den Pfad, wo ich meine Bilder bekomme, ich navigiere bereits zu diesem Pfad, also schätze ich, brauche ich diesen Teil des Befehls nicht korrekt? – utdev

+0

@Matt könnte Ihr Beitrag Ihren Vorschlag bitte bitte – utdev

Verwandte Themen