PDA

View Full Version : /batchscan Kommandozeilen-Parameter kann keine Dateinamen mit Komma (,) erzeugen



tdiv
21.09.2009, 04:34 PM
Zur Beschleunigung meiner Batch-Scans in Windows XP habe ich mir ein kleines .vbs Script mit nativem Windows Save Dialog angelegt. Es funktioniert perfekt, aber leider kommt die /batchscan Option mit Dateinamen, die ein Komma enthalten, nicht klar, auch dann nicht, wenn man den Dateinamen in Anführungszeichen setzt:

C:\programme\irfanview\i_view32.exe /batchscan=("C:\temp\Meine Scandatei, Seite ",1,1,2,1,,gif,0) /dpi=(150,150)

Das erwartete Ergebnis ist folgende Datei: "C:\temp\Meine Scandatei, Seite 1"

Unter Windows ist ein Komma ein erlaubtes Zeichen für Dateinamen. Sobald der Dateiname in Anführungszeichen steht, sollte Irfanview die Bestandteile des Dateinamens nicht mehr als Teil der Batchscan-Optionen auswerten. Mit anderen Worten: Erst Anführungszeichen, dann Komma auswerten. Gerade bei der Batch-Scan Option verwende ich ständig Kommas im Dateinamen, um die Seitenzahl abzugrenzen.

Hier noch das gesamte Script, aber für das Problem spielt es keine Rolle (ja, es fehlen noch die Anführungszeichen um den Dateinamen, aber auch mit Anführungszeichen funktioniert es nicht)

Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
objDialog.FileName = "C:\Dokumente und Einstellungen\User\Eigene Dateien\Scans\ScanDateiname"
objDialog.FileType = "gif"
intReturn = objDialog.OpenFileSaveDlg
If intReturn Then
Set sh = CreateObject("WScript.Shell")
sh.Run("C:\programme\irfanview\i_view32.exe /batchscan=(" + objDialog.FileName + ",1,1,2,1,,gif,0) /dpi=(150,150)")
Else
Wscript.Quit
End If

Foxy
21.09.2009, 05:27 PM
Schuß ins Blaue (mangels betriebsbereiten Scanners): Falsche Syntax!


i_view32.exe /batchscan=(filename,1,1,2,1,c:\temp,bmp,0)

Korrekte Reihenfolge: Dateiname, Index, Erhöhung, Ziffern, Überspringen, Zielverzeichnis, Erweiterung, Multi-TIF

tdiv
22.09.2009, 12:45 PM
Schuß ins Blaue (mangels betriebsbereiten Scanners): Falsche Syntax!

i_view32.exe /batchscan=(filename,1,1,2,1,c:\temp,bmp,0)
Korrekte Reihenfolge: Dateiname, Index, Erhöhung, Ziffern, Überspringen, Zielverzeichnis, Erweiterung, Multi-TIF

Leider daneben! Zumindest wenn es den Pfad schon gibt, haben weder der Speichern-Dialog des Scripts noch Irfanview Probleme mit der Interpretation des vollständigen Dateipfads, der eigentlich als Parameter nur ein Dateiname sein sollte. Auch der fehlende Parameter Zielverzeichnis ist dann kein Problem (und wahrscheinlich generell nie ein Problem). Nein, es geht wirklich nur darum, das Irfanview nicht in der Lage ist, "Dateiname mit Komma, Seite X" aufgrund der Anführungszeichen als Dateinamen zu erkennen und nicht "Seite X" stumpf als Index-Parameter zu interpretieren, nur weil ein Komma davor steht. Dadurch verrutschen dann alle nachfolgenden Parameter und es kommt zu unerwarteten Ergebnissen...

Foxy
22.09.2009, 01:27 PM
Dann bleibt einstweilen wohl nur, im Dateinamen anstatt des Kommas ein anderes Zeichen einzusetzen (, nur um dieses andere Zeichen im nachhinein gleich wieder gegen ein Komma auszuwechseln, bspw. mittels eines Skriptes).

tdiv
22.09.2009, 04:35 PM
Dann bleibt einstweilen wohl nur, im Dateinamen anstatt des Kommas ein anderes Zeichen einzusetzen (, nur um dieses andere Zeichen im nachhinein gleich wieder gegen ein Komma auszuwechseln, bspw. mittels eines Skriptes).

Für die Erzeugung der Dateien kann man diesen Workaround nehmen, aber "im Nachhinein auswechseln" geht leider nicht mit demselben Script, da das Script nicht wissen kann, wann der User mit manuellem Batch-Scannen fertig ist. Außerdem arbeite ich oft schon während des Scannes der nächsten Seiten mit den ersten Dateien. Ein zweites Skript manuell anzustoßen, ist nicht nur lästig, sondern auch fehleranfällig, da dann möglicherweise Dateinamen, die das temporäre "Ersatzzeichen", z. B. ein Semikolon (; ) enthalten /sollen/, falsch umbenannt werden.

Was muss ich tun, damit der Fehler an Irfan weitergeleitet und behoben wird?

tdiv
24.09.2009, 07:45 AM
Derselbe Fehler tritt auch auf, wenn man Klammern im Dateinamen verwendet, was ja auch kein besonders ungewöhnlicher Fall ist:

C:\programme\irfanview\i_view32.exe /batchscan=("C:\temp\Meine Scandatei (neu) ",1,1,2,1,,gif,0)

In diesem Fall macht Irfanview scheinbar gar nichts.
Das erwartete Ergebnis ist folgende Datei: "C:\temp\Meine Scandatei (neu) 01.gif"

Von einem Kommandozeilen-Parameter kann man erwarten, dass er einen in Anführungszeichen eingeschlossenen Dateipfad auch als solchen korrekt auswertet und nicht gültige Zeichen innerhalb des Dateinamens mit Parameterzeichen verwechselt. Der Fix dafür dürfte ja wohl keine große Sache sein.