Announcement

Collapse
No announcement yet.

/batchscan Kommandozeilen-Parameter kann keine Dateinamen mit Komma (,) erzeugen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    /batchscan Kommandozeilen-Parameter kann keine Dateinamen mit Komma (,) erzeugen

    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

    #2
    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
    »Und so, in eurer Verzweiflung, kommt ihr zu mir.«

    Texteditor EmEditor:
    Deutsche Sprachdatei (v7.01) für EmEditor Pro 7.02 (englisch)
    EmEditor Pro 8.06 (deutsch) | Deutsche Sprachdatei (v8) für EmEditor Pro 8.06 (englisch)
    Deutsche Sprachdatei (v9.16) für EmEditor Pro 9.17 (englisch)

    Comment


      #3
      Originally posted by Foxy View Post
      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...

      Comment


        #4
        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).
        »Und so, in eurer Verzweiflung, kommt ihr zu mir.«

        Texteditor EmEditor:
        Deutsche Sprachdatei (v7.01) für EmEditor Pro 7.02 (englisch)
        EmEditor Pro 8.06 (deutsch) | Deutsche Sprachdatei (v8) für EmEditor Pro 8.06 (englisch)
        Deutsche Sprachdatei (v9.16) für EmEditor Pro 9.17 (englisch)

        Comment


          #5
          Originally posted by Foxy View Post
          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?

          Comment


            #6
            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.

            Comment

            Working...
            X