Seite 1 von 1

Status der VM per Batch - Hilfe - vmware-cmd.bat

Verfasst: 05.12.2006, 15:40
von chri7
Hallo Leute,

ich schreibe gerade ein Backup.-Batch für den VMWare free Server auf WIndows, den Status könnt ihr im Thread http://vmware-forum.de/viewtopic.php?p=29367#29367 nachschauen.

Hier das Problem:

Ich will per Batch den Status der VM abfragen, kann aber den Returncode nicht abfangen, bin am verzweifeln:

Code: Alles auswählen

::Abfrage ob VM läuft oder nicht
::------------------------------
:: wenn nicht nur backup, wenn ja suspend-backup-continue
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" getstate ¦ FIND "on" > NUL
if errorlevel 2 ECHO ---2---
if errorlevel 1 ECHO ---1---


Hier der komplette Batchcode fyi, bin für jede Hilfe dankbar:

Code: Alles auswählen

:: Lucia VM-Ware Backup Batch
:: ASP: Baumann
:: ------------------

::Echo aus und CLS
::----------------
@echo off
cls


::Variablen Festlegen
::-------------------
SET VMCMDPFAD=C:\Programme\VMware\VMware Server\vmware-cmd.bat
SET VMSTOREPFAD=F:\Virtual Machines
SET VMBACKUPPFAD=F:\Virtual Machines\_backups_
SET BACKUPTOOL=F:\Virtual Machines\_backups_\7za.exe
:: SET VMXFILE=Windows 2000 Professional.vmx
SET VMXFILE=%2

:: Abfrage ob Hilfe
:: ----------------
IF "%1"=="" goto HELP
IF "%1"=="/?" goto HELP
IF "%1"=="?" goto HELP
IF "%1"=="help" goto HELP
IF "%1"=="/help" goto HELP
IF "%1"=="h" goto HELP
IF "%1"=="/h" goto HELP

::Abfrage ob VM läuft oder nicht
::------------------------------
:: wenn nicht nur backup, wenn ja suspend-backup-continue
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" getstate ¦ FIND "on" > NUL
if errorlevel 2 ECHO ---2---
if errorlevel 1 ECHO ---1---

goto END



:vmruns
:: Backup bei laufender Maschine
:: -------------------------
::Suspend der VM
echo suspend:
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" suspend
echo.
echo rename:
:: rename des alten BAckup in old, dabei überschreiben des vorherigen alten Backups
move  "%VMBACKUPPFAD%\%1.zip" "%VMBACKUPPFAD%\OLD_%1.zip"
echo.
echo backup
:: BAckup der VM Dateien in eine CAB File
"%BACKUPTOOL%" a -tzip -mmt=on -y  "%VMBACKUPPFAD%\%1.zip" "%VMSTOREPFAD%\%1\*"
echo.
echo start der vm
:: Starten der VM nach Backup
call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" start
echo.
goto END

:vmstands
:: Backup bei stehender Maschine
:: -------------------------
echo rename:
:: rename des alten BAckup in old, dabei überschreiben des vorherigen alten Backups
move  "%VMBACKUPPFAD%\%1.zip" "%VMBACKUPPFAD%\OLD_%1.zip"
echo.
echo backup
:: BAckup der VM Dateien in eine CAB File
"%BACKUPTOOL%" a -tzip -mmt=on -y  "%VMBACKUPPFAD%\%1.zip" "%VMSTOREPFAD%\%1\*"
echo.
goto END

:HELP
ECHO    ###########################################################################
ECHO    #                                                                         #
ECHO    # backupVMs -VM-  -VMXFILE-                                               #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # -VM-  Name der VM ohne Leerzeichen und Pfad z.B. LuciaVM01              #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # -VMXFILE-  Name der VMX Datei ohne Leerzeichen und Pfad z.B. LuciaVM01  #
ECHO    #                                                                         #
ECHO    #                                                                         #
ECHO    # --   andere Pfade und Variablen siehe Sourcecode    --                  #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    # typischer Aufruf:                                                       #
ECHO    #                                                                         #
ECHO    # backupVMs LuciaVM01 Windows2000.vmx                                     #
ECHO    #                                                                         #
ECHO    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
ECHO    #                                                                         #
ECHO    #                                            Coded by Baumann dez_2006    #
ECHO    #                                                                         #
ECHO    ###########################################################################
goto END


:END
:: This is the end    -     my only friend    -    the end *sing*
:: Mensch, das ganze Code hacken macht einen echt wuschig B~7
[/b]

Verfasst: 05.12.2006, 15:42
von chri7
also das

Code: Alles auswählen

if errorlevel 2 ECHO ---2---
if errorlevel 1 ECHO ---1---

ist nur nen Lückenfüller, hier kommen später die gotos hin ob die vm erst noch suspended werden muss und danach wieder aufgeweckt oder ob sie bereits schläft und ein packen reicht ....

Verfasst: 03.01.2007, 11:46
von chri7
So .. hat sich erledigt. ...

Errorlevel 0 heisst läuft,
und 1 heisst Maschine steht (pause oder stop).

hab das ergänzt, und nun funzt das *froi*:

Code: Alles auswählen


::Abfrage ob VM läuft oder nicht
::------------------------------
:: wenn nicht nur backup, wenn ja suspend-backup-continue
::
:: errorlevel 1 == VM steht (pause oder stop)
:: errorlevel 0 == VM luft (also muss noch pausiert werden vorm backup)

call "%VMCMDPFAD%" "%VMSTOREPFAD%\%1\%VMXFILE%" getstate | FIND "on" > NUL
if errorlevel=1 goto vmstands
goto vmruns