olegischinski 10 Geschrieben 31. August 2010 Melden Teilen Geschrieben 31. August 2010 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! Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 1. September 2010 Melden Teilen Geschrieben 1. September 2010 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. Zitieren Link zu diesem Kommentar
olegischinski 10 Geschrieben 2. September 2010 Autor Melden Teilen Geschrieben 2. September 2010 (bearbeitet) 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 2. September 2010 von olegischinski Zitieren Link zu diesem Kommentar
Mae 0 Geschrieben 8. November 2016 Melden Teilen Geschrieben 8. November 2016 …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... Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.