[gelöst]vmrun über autoIT ausführen

  • Hallo zusammen,

    ich bin ganz neu im Forum und auch relativ neu bei dem Programm. Falls es eigentlich eine blöde Frage ist, dann bitte nicht gleich den Kopf abreissen.

    Zu meiner Situation:

    Ich habe unter dem VMware Player eine Win 8.1 VM laufen. Innerhalb dieser VM kann ich vom Host ein Programm starten. Das ganze läuft dann im Unity Mode und ich habe eine Verknüpfung auf dem Host gemacht.
    Nun lässt sich das Programm ja ganz einfach öffnen und schliessen. Leider wird beim Schliessen allerdings die VM nicht heruntergefahren. Um nun Ressourcen zu sparen wollte ich ein kleines Script schreiben, welches im Hintergrund guckt, ob das Programm innerhalb der VM offen ist oder nicht.
    Wenn ja, dann soll es 5 Minuten warten. Wenn nicht, dann soll die VM heruntergefahren werden.

    Im Grunde funktioniert das meiste auch schon, bis auf den Befehl zum Herunterfahren der VM. Hier bräuchte ich etwas Hilfe, um dies etwas komfortabler zu lösen.

    Mein Script:

    in der Batchdatei "vmware.bat" steht folgendes:

    Code
    @echo on
    cd\
    cd C:\Program Files (x86)\VMware\VMware VIX\
    vmrun.exe -T player stop "D:\Windows 8 VM\Windows 8 x64.vmx"

    Diesen Befehl würde ich nun natürlich gerne direkt in das Script einbinden, allerdings habe ich es in den Möglichkeiten, die ich probiert habe nicht hinbekommen.
    Entweder ich erhalte eine Fehlermeldung, oder es passiert einfach gar nichts.

    Ich habe etwas die Hoffnung, dass mir einer die Codezeile sagen könnte, weil ich echt nicht mehr weiter weiß. Die gesamten Versuche hier aufzulisten würde wahrscheinlich das Forum sprengen :D

    Bin für jede Hilfe dankbar.

    Schöne grüße
    BalloS

    Einmal editiert, zuletzt von BalloS (12. August 2015 um 19:00) aus folgendem Grund: erfolgreich gelöst

    • Offizieller Beitrag

    Das Problem bei Befehlen für die Konsole ist die korrekte Einbettung in Anführungszeichen. Da Parameter dort zusätzliche Anführungszeichen enthalten können, ist es am Einfachsten die Strings zu splitten und erst beim Aufruf zusammenzuführen.
    Probier mal so:

  • Vielen Dank für die Antwort.
    Leider funktioniert es nicht.

    Ich erhalte zwar noch die MsgBox und Exit Code: 0
    Aber dafür passiert auch nichts. Die VM läuft ganz normal weiter.

    Kann man es auch irgendwie so schreiben, dass ich eine Ausgabe erhalte, was er versucht und was passiert wenn der Befehl ausgeführt wird ? Vielleicht hat es ja eine ganz andere Ursache, obwohl der Befehl in der Batch und über die CMD funktioniert.

    gruss
    Ballos

  • Hi Fengalf,

    vielen Dank.

    Aber wenn ich das richtig lese, dann hilft es einem, falls Fehler auftreten. In meinem Fall läuft das Script ja "fehlerfrei" durch. Jedoch wird das beabsichtigte (Beenden der VM) nicht ausgeführt.

    Ich habe mir auch beide Variablen ausgeben lassen und die scheinen in Ordnung zu sein. Auch zusammengefasst scheint der Befehl richtig zu sein.
    Er wird vom System nur einfach nicht ausgeführt.

    • Offizieller Beitrag

    Aber wenn ich das richtig lese, dann hilft es einem, falls Fehler auftreten. In meinem Fall läuft das Script ja "fehlerfrei" durch.

    Sicher?
    Hast du den Return geprüft?

    Return Value

    Success: the PID of the process that was launched.
    Failure: 0 and sets the @error flag to non-zero.

    Eventuell musst du tatsächlich für die Ausführung des Befehls im *.exe - Verzeichnis sein.
    Run ( "program" [, "workingdir" [, show_flag [, opt_flag]]] )
    Gib dort mal dein Verzeichnis mit an.

  • Hi,

    super. Es funktioniert nun.

    Der Code sieht nun so aus:


    Vielen Dank für die Hilfe.

    gruss
    Ballos