Probleme mit Run und Leerzeichen im exe-Pfad

  • Hallo Leute,

    ich habe gerade Probleme mit der Konsole..

    Ich möchte die pdfinfo.exe starten.
    Nun liegt sie im Verzeichnis "D:\User\Desktop\Neuer Ordner(3)".

    Die Ausführung scheitert mit der Meldung: Der Befehl "D:\User\Desktop\Neuer" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    Nach einem Blick in meine _xpdf.au3 dachte ich, aha alles klar. Die Variable $sXPDFInfo für den Pfad der exe steht nicht in Anführungszeichen.

    AutoIt
    Local $iPid = Run(@ComSpec & ' /c ' &  $sXPDFInfo & ' "' & $sPDFFile & '"', @ScriptDir, @SW_HIDE, 2)

    Also habe ich das geändert in:

    AutoIt
    Local $iPid = Run(@ComSpec & ' /c "' &  $sXPDFInfo & '" "' & $sPDFFile & '"', @ScriptDir, @SW_HIDE, 2)

    Leider bringt das gar nichts. Die Meldung bleibt gleich.

    Kann mir jemand zeigen, wie man das korrekt aufruft?

    Grüße autoiter

  • AutoIt
    Local $iPid = Run('"' & $sXPDFInfo & '" "' & $sPDFFile & '"', @ScriptDir, @SW_HIDE, 2)

    Lasst doch diese @Comspec Geschichten weg, wenn es sich nicht um einen Batch-internen Befehl handelt oder die Ausgabe in die Konsole unbedingt benötigt wird.

    Aber ggf. geht es so:

    AutoIt
    Local $iPid = Run(@ComSpec & ' /c ""' & $sXPDFInfo & '" "' & $sPDFFile & '""', @ScriptDir, @SW_HIDE, 2)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (13. Juli 2017 um 18:14)

  • Hallo @Micha_he,

    Das hat es gebracht :)
    Ich dachte es geht aus meinem Text hervor, was in den Variablen steht. Es war der komplette Dateipfad. Nächstes Mal hänge ich direkt ein Testpaket an. Testweise hatte ich Compsec auch rausgeschmissen. Aber ich muss das falsch gemacht haben, denn bei mir hatte es nicht geklappt. Vielen Dank :thumbup:

    Grüße autoiter

  • Hatte meine Antwort gerade nochmal editiert, da ich den Variableninhalt aus dem Text herausgelesen haben.
    Schaue immer zuerst auf Quellcode und vergesse den Rest anständig zu lesen...

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    • Offizieller Beitrag

    Ein viel zu häufig vergessener Befehl ist StringFormat. Damit schreibt man den Befehl genau, wie in einer Kommandozeile (nur mit Platzhaltern) formatiert:

    Vereinfacht m.M. die Angelegenheit und man sieht auf den ersten Blick, was ausgeführt wird.

  • Hallo @BugFix
    danke dir. Ja, StringFormat macht das deutlich weniger verwirrend. So klappt es auch mit dem in der UDF ursprünglich genutzten @ComSpec.
    Allerdings müssen auch bei StringFormat die doppelten Gänsefüßchen angegeben werden, damit es funktioniert.

    AutoIt
    $sCmd = StringFormat('%s /c ""%s" "%s""', @ComSpec, $sXPDFInfo, $sPDFFile)

    EDIT: Zur Vollständigkeit halber mal ein Paket mit dem Testskript und der UDF