CMD + @COMSPEC + Variablen

  • Hallo,
    Ich möchte über die CMD Word Dateien in PDF Dateien umwandeln.
    Über die Cmd funktioniert es ohne Probleme auch in AutoIT(ohne Variablen), sobald ich Variablen benutze klappt es nicht mehr.
    Vielleicht habt ihr eine Ahnung warum es nicht klappt.

    [autoit]


    $Word = "Z:\test\5.doc"
    $Programm = "Z:\test\Convert2PDF.vbs"
    RunWait(@COMSPEC & " /c &'$Programm' &'$Word'")

    [/autoit]

    Einmal editiert, zuletzt von DanielZ86 (25. September 2012 um 05:47)

  • Das muss so aussehen:

    [autoit]


    $Word = "Z:\test\5.doc"
    $Programm = "Z:\test\Convert2PDF.vbs"
    RunWait(@COMSPEC & " /c '" & $Programm & "' '" & $Word & "'")

    [/autoit]


    Damit wird dann folgender Konsolenbefehl ausgeführt:

    Code
    'Z:\test\Convert2PDF.vbs' 'Z:\test\5.doc'

    lg chess

  • Funktioniert irgendwie immer noch nicht.
    Wenn ich es so in die CMD eingebe gehts

    [autoit]

    "Z:\test\Convert2PDF.vbs" "Z:\test\5.doc"

    [/autoit]

    und so in AutoIT

    [autoit]

    RunWait(@COMSPEC & " /c Z:\test\Convert2PDF.vbs Z:\test\5.doc")

    [/autoit]

    .
    Nur ich brauche Variablen und keine festen Angaben.

  • Fehler meinerseits!
    Die Windows-Konsole akzeptiert keine '...

    [autoit]


    $Word = "Z:\test\5.doc"
    $Programm = "Z:\test\Convert2PDF.vbs"
    RunWait(@COMSPEC & " /c """ & $Programm & """ """ & $Word & """")

    [/autoit]

    lg chess:P

  • Ja, ich habe auch probleme mit der Syntax...

    Helfen würde in diesen Fall: StringFormat ;)


    Edit:

    [autoit]


    $pfad = @ScriptDir & '\Test.exe'
    $var_1 = '"Parameter 1"'
    $var_2 = '"Parameter 2"'

    [/autoit][autoit][/autoit][autoit]

    $pfad = StringFormat("%s %s %s", $pfad, $var_1, $var_2)

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($pfad & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    ;~ Run($pfad)

    [/autoit]

    Aber im Prinzip ist es das gleiche was Chesstiger gepostet hat...

    2 Mal editiert, zuletzt von Yjuq (24. September 2012 um 20:56)

  • Dann... weiß ich auch nicht weiter.
    Du meintest, dieser Aufruf würde funktionieren:

    [autoit]


    RunWait(@COMSPEC & " /c Z:\test\Convert2PDF.vbs Z:\test\5.doc")

    [/autoit]


    Bzw. CMD:

    Code
    "Z:\test\Convert2PDF.vbs" "Z:\test\5.doc"

    Die Ausgabe von meinem Script (Post 4) ist diese hier:

    Code
    C:\Windows\system32\cmd.exe /c "Z:\test\Convert2PDF.vbs" "Z:\test\5.doc"


    Der erste Teil entspricht dem Pfad zur cmd.exe / dem "/c"-Parameter. Dann bleibt noch das übrig:

    Code
    "Z:\test\Convert2PDF.vbs" "Z:\test\5.doc"


    Was exakt deinem funktionierenden CMD-Befehl entspricht.

    lg chess

  • Jap
    Das funktioniert in AutoIT auch einwandfrei

    [autoit]

    RunWait(@COMSPEC & " /c Z:\test\Convert2PDF.vbs Z:\test\5.doc")

    [/autoit]


    Aber eben ohne Variablen. Also muss es ja an der Syntax liegen. :D

  • Dann probier mal so:

    [autoit]


    $Word = "Z:\test\5.doc"
    $Programm = "Z:\test\Convert2PDF.vbs"
    RunWait(@COMSPEC & " /c " & $Programm & " " & $Word)

    [/autoit]


    Dann kannst du allerdings keine Leerzeichen in den Pfaden benutzen.

    lg chess

  • Also entweder ich habe ein wichtiges Detail überlesen, oder ihr habt einfach nicht daran gedacht, dass man sowas ja auch gleich so lösen kann:

    [autoit]

    ShellExecute("Z:\test\Convert2PDF.vbs","Z:\test\5.doc")

    [/autoit]

    LG
    Christoph :)

  • Der Syntaxfehler war siehe Zeile 1
    Nur ein kleiner Auszug aus meinem Skript, denke versteht so jeder.
    Jetzt gehts, danke nochmal an alle Helfer.

    [autoit]

    $blub = StringRegExpReplace(@ScriptDir, "/", "\\")
    $Slash = "\"
    $Past = $blub & $Slash
    $Word = $Past & "5.doc"
    $Programm = $Past & "Convert2PDF.vbs"
    RunWait(@COMSPEC & " /c " & $Programm & " " & $Word)

    [/autoit]

    Gruß Daniel

  • nur zur Vervollständigung ComSpec wird bei CMD-Aufrufen nur beötigt wenn "festverdahtete" Funktionen des Kommadozeileninterpreters benutzt werden z.B.: Copy, Dir etc. .Bei aufrufen von Programmen geht es auch ohne.

    [autoit]

    $blub = StringRegExpReplace(@ScriptDir, "/", "\\")
    $Slash = "\"
    $Past = $blub & $Slash
    $Word = $Past & "5.doc"
    $Programm = $Past & "Convert2PDF.vbs"
    RunWait($Programm & " " & $Word)

    [/autoit]

    sollte also auch funktionieren. Die Lösung von BinDannMalWeg ist natürlich am einfachsten.

    @DanielZ86: setze bitte das Thema auf gelöst. Einfach den Eröffnunngsbeitrag bearbeiten, den Präfix (nähe Überschrift) umstellen und absenden, danke.

    mfg autoBert