Leerzeichen im Variablenwert, der in einem Dosbefehl verwendet wird

  • Hallo,

    ich steh momentan vor folgendem Problem und weiß nicht so recht weiter.

    Mittels der VMware VmPerl Scripting API ist es möglich, VMs per Kommandozeile zu starten/stoppen und andere Dinge damit zu machen, Dies ist Beispielsweise in der Konsole über den Befehl

    Code
    "C:\Program Files (x86)\VMware\VMware VmPerl Scripting API\vmware-cmd.bat" "d:\vms\server2k3client\windows server 2003 enterprise edition.vmx" start

    realisierbar. Den Pfad bis zur vmware-cmd.bat und den kompletten Pfad der .vmx Datei habe ich jeweils in einer Variable gespeichert. Problem: in diesen Pfaden sind Leerzeichen. Versuche ich nun innerhalb eines AuoIt Scripts diesen Befehl auf zu rufen

    [autoit]


    $VMWareCMDFilePath = "C:\Program Files (x86)\VMware\VMware VmPerl Scripting API\vmware-cmd.bat"
    $ComputerVmxPath = "d:\vms\server2k3client\windows server 2003 enterprise edition.vmx"

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

    RunWait(@ComSpec & ' /c ' & $VMWareCMDFilePath & " " & $ComputerVmxPath & " start", $VMWareCMDPath, @SW_HIDE)

    [/autoit]

    funktioniert dies, da er nur bis C:\Program kommt und dann wegen des Leerzeichens abbricht. Ich bin schon auf die glorreiche Idee gekommen, die Variablen in Anführungszeichen zu setzen, hilft aber natürlich nichts.


    Wie kann ich dieses Problem umgehen?

    Danke im Voraus, smoo

    Einmal editiert, zuletzt von smoochy (16. Mai 2008 um 11:04)

  • Wofür gibt es 2 Arten von Stringbegrenzern? " und ' :P

    [autoit]

    RunWait(@ComSpec & ' /c "' & $VMWareCMDFilePath & '" "' & $ComputerVmxPath & '" start"', $VMWareCMDPath, @SW_HIDE)

    [/autoit]
  • Hallo progandy,

    danke für deine Antwort. Sie hat zwar nicht funktioniert, aber mich auf den richtigen Weg gebracht ;)

    Folgendes hat dann funktioniert:

    [autoit]


    $VMWareCMDFilePath = "C:\Program Files (x86)\VMware\VMware VmPerl Scripting API\"
    $VMWareCMDFile = "vmware-cmd.bat"
    $ComputerVmxPath = "d:\vms\server2k3client\windows server 2003 enterprise edition.vmx"

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

    RunWait(@ComSpec & " /c " & '"' & $VMWareCMDFile & '"' & " " & '"' & $ComputerVmxPath & '"' & " start", $VMWareCMDPath, @SW_HIDE)

    [/autoit]

    Danke für den Denkanstoss.

    mfg, smoo

  • Nun, meins hätte fast funktioniert, da war nur am einde nach start ein " zu viel :)