Go to End in Batch file

Morning,

So I have this code which people helped me with, i'm just trying to get it to skip the installation if a reg key exists.

@echo off
setlocal enabledelayedexpansion

set GUIDs=DDF96E66-E39B-4A69-B776-2DE49EBCAFBD D7D3F00A-638B-41DE-A2A3-FFC6EF034783 B1A6CB20-C032-4228-940F-AC3BC9BF6B3E 3EB41C0B-00EF-4C8B-9FF7-FF252E2F4E33 D8A08493-2F06-4EB2-A636-4392991981AB 
for %%a in (%GUIDs%) do (
     reg.exe query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{%%a}" >NUL 2>&1
      if not errorlevel 1 (
            echo Uninstalling %%a
          msiexec.exe /X{%%a} /quiet
      )
)

:::8x8 VOD Latest Version Installation
::: Copy the latest version of the VOD to the path below and change the msi filename

Reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{5FCB2176-11C5-4114-889B-CD93066BE094}
IF %errorlevel%==0 GOTO END


msiexec.exe /i "\\domain.com\SYSVOL\domain.com\scripts\8x8\VOD_5_6_0.msi" /qn
                (if %errorlevel%==0 (
                  echo %date% %time% %Computername% - Installation succeeded
)              ELSE (
                                echo %date% %time% %Computername% - Installation FAILED - %errorlevel%
)) >>      "\\file08\W common\logs\%Computername% InstallVOD.log""
::: Please wait for the time to finish

timeout 15

:END

Open in new window


The bit I've got issues with is

Reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{5FCB2176-11C5-4114-889B-CD93066BE094}
IF %errorlevel%==0 GOTO END

And then the :END label, it doesn't seem to work quite right.

Is it right or am I missing something?

Thanks
Alex
LVL 18
Alex GreenProject Systems EngineerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

oBdACommented:
Should work, but there is no need to define a label "end". There is an implicitly defined label ":eof" that you can use as "goto :eof".
Try it like that:
@echo off
setlocal enabledelayedexpansion

set GUIDs=DDF96E66-E39B-4A69-B776-2DE49EBCAFBD D7D3F00A-638B-41DE-A2A3-FFC6EF034783 B1A6CB20-C032-4228-940F-AC3BC9BF6B3E 3EB41C0B-00EF-4C8B-9FF7-FF252E2F4E33 D8A08493-2F06-4EB2-A636-4392991981AB 
for %%a in (%GUIDs%) do (
	reg.exe query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{%%a}" >NUL 2>&1
	if not errorlevel 1 (
		echo Uninstalling %%a
		msiexec.exe /X{%%a} /quiet
	)
)

:::8x8 VOD Latest Version Installation
::: Copy the latest version of the VOD to the path below and change the msi filename
reg.exe query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{5FCB2176-11C5-4114-889B-CD93066BE094}" >NUL 2>&1
if not errorlevel 1 (
	echo 8x8 VOD Latest Version is already installed, leaving.
	goto :eof
)

msiexec.exe /i "\\domain.com\SYSVOL\domain.com\scripts\8x8\VOD_5_6_0.msi" /qn
(
	if %errorlevel%==0 (
		echo %date% %time% %Computername% - Installation succeeded
	) else (
		echo %date% %time% %Computername% - Installation FAILED - %errorlevel%
	)
) >> "\\file08\W common\logs\%Computername% InstallVOD.log""
::: Please wait for the time to finish

timeout 15

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Alex GreenProject Systems EngineerAuthor Commented:
What's that bit here

>NUL 2>&1
if not errorlevel 1 (
      echo 8x8 VOD Latest Version is already installed, leaving.
      goto :eof
)

The nul bit?

Thanks
Alex
0
oBdACommented:
The ">NUL" redirects the standard output of reg.exe to the NUL device, that is, suppresses it, since you're not really interested in the value, just whether the key exists.
The "2>&1" redirects the error output (if the key wasn't found) to the standard output (which is already suppressed), suppressing it as well.
0
Alex GreenProject Systems EngineerAuthor Commented:
Excellent, thank you again, I thought I'd got pretty close but I love your reporting.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Windows Batch

From novice to tech pro — start learning today.