2017-05-03 2 views
0

Hier ist mein CodeWindows-Batch: Wird Bedingung nicht bestätigt

ECHO off 
CLS 
ECHO List of VMs: 
ECHO ............. 
cd /D "F:\VMs" 
setlocal enabledelayedexpansion 
set num=0 
for /f "tokens=*" %%i in ('dir /s/b *.vmx') do set /a num+=1&set VM[!num!]=%%i 
set numberOfVMs=0 
for /F "tokens=2 delims==" %%s in ('set VM[') do (
    set /a numberOfVMs+=1 
    echo !numberOfVMs! -^> %%s 
) 
ECHO. 
ECHO List of Running VMs: 
ECHO ..................... 
set num=-1 
for /f "tokens=*" %%i in ('vmrun -T ws list') do (
    set /a num+=1 
    if !num! NEQ 0 set RUNNINGVM[!num!]=%%i 
) 
set numberOfRunningVMs=0 
for /F "tokens=2 delims==" %%s in ('set RUNNINGVM[') do (
    set /a numberOfRunningVMs+=1 
    echo !numberOfRunningVMs! -^> %%s 
) 
ECHO. 
ECHO List of Available VMs: 
ECHO ....................... 
for /l %%x in (1, 1, %numberOfVMs%) do ( 
    ::echo !VM[%%x]! 
    for /l %%y in (1, 1, %numberOfRunningVMs%) do (
      echo !VM[%%x]! 
      echo !RUNNINGVM[%%y]! 
     if "!VM[%%x]!"=="!RUNNINGVM[%%y]!" (
      echo "success" 
     ) 
    ) 
) 

Array Varibale 'VM' hat unter Werte:

F: \ VMs \ PD-UI-Tests-Win10- x64-Office2016-32bit.vmwarevm \ Windows-10-x64.vmx

F: \ VMs \ PD-UI-Tests-Win10-x64-Office2016-64bit.vmwarevm \ Windows-10-x64.vmx

F: \ VMs \ PD-UI-Tests-Win7-x64-Offic e2013-32bit.vmwarevm \ Windows7-x64-RTM.vmx

Array Varibale 'RUNNINGVM' hat unterhalb der Werte:

F: \ VMs \ PD-UI-Tests-Win7-x64-Office2013-32bit .vmwarevm \ Windows7-x64-RTM.vmx

Aber die letzte if-Bedingung wird nie 'wahr', obwohl die VM [3] gleich RUNNINGVM [1] ist. Was vermisse ich? Bitte helfen Sie

+0

Was ist der Ausgang? Wenn Sie das Echo direkt nach "Liste der verfügbaren VMs" einschalten, zeigt das etwas Interessantes? – jdigital

Antwort

0

Verwenden Sie nicht ::-Stil Kommentare in einem Code-Block, wie es tatsächlich ein gebrochenes Etikett ist, und Etiketten brechen Code-Blöcke. Verwenden Sie stattdessen rem.

Verwandte Themen