Jump to content

vbs für ImageMagick


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

hallo an alle!

 

Folgendes Problem:

In einem Ordner soll eine beliebige Anzahl Bilder markiert werden, die dann über das Kontextmenü mit "Senden an" per Script an ImageMagick übergeben werden und konvertiert in einem Ordner auf dem Desktop landen sollen.

Dazu habe ich ein Code-Beispiel aus der Doku von IM leicht angepasst

Dim FName
Dim wsh,fs
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
'
NArgs = WScript.Arguments.Count
Redim FName(NArgs-1)
strInputFiles  = ""
For i = 0 to NArgs - 1
       FName(i) = """" & WScript.Arguments(i) & """"
       strInputFiles = strInputFiles & " " & FName(i)
next
'
fs.CreateFolder "Desktop\Web-Bilder"
Command = "C:\Programme\ImageMagick-6.6.3-Q16\convert.exe " & strInputFiles & " -resize 700 ""Desktop\Web-Bilder\file.jpg"""
wsh.run command, 7, true

Das klappt soweit auch, allerdings würde ich die Zieldateien auch gern wie die Ausgangsdateien benennen lassen.

 

Kann mir jemand helfen, wie das zu bewerkstelligen ist?

Vielen Dank im voraus!

Link zu diesem Kommentar

Hallo und Willkommen,

 

ich kenne ImageMagick nicht, vermute aber, dass Du das über eine Option bei der convert.exe steuern kannst. Möglicherweise die, wo Du momentan "...Web-Bilder\file.jpg" stehen hast?

 

Per Script sähe ich nur die Möglichkeit, Convert innerhalb der Schleife für jedes Bild einzeln aufzurufen und die Datei hinterher jeweils umzubenennen.

Link zu diesem Kommentar

hallo Frank,

 

besten Dank für den Hinweis (manchmal braucht's einen Anstoß, dass der Baum umfällt ;-) Ich hab den convert-Befehl jetzt in die Schleife gelegt, und alles läuft, wie gewünscht ... War ein schöner Denksport bei Vorkenntnis = 0.

Hier der Schnippel, falls das jemanden interessiert.

Dim FName()
Dim wsh,fs
Set wsh = CreateObject("Wscript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CreateFolder "Desktop\Web-Bilder"
'
Set Args = WScript.Arguments
For Each strArg in Args
	InFile = """" & strArg & """"
	OutFileName = fs.getBaseName(InFile)
	Command = "C:\Programme\ImageMagick-6.6.3-Q16\convert.exe " & InFile & " -resize 700 ""Desktop\Web-Bilder\" & OutFileName & ".jpg"""
	wsh.run command, 7, true
next

 

Edit:Wie ich gerade bemerkt habe, wird bei der Auswahl zu vieler Dateien (ca. 25) die Argumentenliste zu lang.

Kann man das beheben?

bearbeitet von olegischinski
Link zu diesem Kommentar
  • 6 Jahre später...

…die Argumentenliste zu lang...
 

Die Microsoftseite (https://support.microsoft.com/de-de/kb/830473) dazu ist irgenwei ein wenig unübersichtlich zu dieser Problematig und die Lösungsansätze für mich nicht hilfreich.

Nun meine ich aber schon folgendes herausgefunden zu haben:

Wenn man ein Script nicht direkt in den Sendto-Ordner schiebt sondern dort nur ein Link mit einer *.lnk Datei erstellt limitiert sich die Argumentenliste sogar auf 260 Zeichen.
Ein Shell-Script (*.cmd abe auch *.vbs) bekommt dagegen schon 2048 oder doch 8192 ... ?

Der Artikel auf dieser Seite könnte einem da vielleicht weiterhelfen: https://blogs.msdn.microsoft.com/oldnewthing/20031210-00/?p=41553/

Dort heißt es "While I'm here, I may as well mention another limit: The maximum size of your environment is 32767 characters. The size of the environment includes the all the variable names plus all the values."

 

Nun sind die Enviroment-Variablen aber nicht die Argumente. Trotzdem gut zu wissen das man Variable-Namen für das Environment besser kurz halten soll, da die eingesparte länge dann dem Inhalt zu gute kommt...
 - um das mal positiv auszudrücken...

 

Also auf die Frage "Kann man das beheben?" - würde ich wohl noch antworten: Nein!

Ein Limit gibt es leider übeall, das es unter Windows allerdings so knapp und kurz ist - ist natürlich besonders ärgerlich!

Und ich weiß leider nicht mal wie man das am besten umgeht, so das jeder Benutzer mit dem Script besser zurecht kommt.

Derzeit gebe ich dann meinen Usern mit, das sie bitte diese Dateien erstmal in einen speziellen Ordner kopieren sollen und dann diesen an SendTo schicken, statt die Datei einzelnd zu markieren.

Ein sehr unschöner "work-a-round" - wie ich finde...

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...