Link to home
Start Free TrialLog in
Avatar of Medquest
MedquestFlag for United States of America

asked on

Need to run a batch file with IF statement

Hi all,

hope you'all having a great weekend.

so here's this weekend question :)

I have a batch script and there some parts of it that needs to run based  on windows version. so I'll like to say "if windows version=windows server 2003 goto W2K3"

I just couldn't find a way or command to determine the running windows version.

can you please help me out with this issue?

Thanks
Avatar of Alan_White
Alan_White
Flag of United Kingdom of Great Britain and Northern Ireland image

Have you played around with VER?
 
This will give you the string of the installed OS, you could use that in your IF statement.
Avatar of Medquest

ASKER

I am checking it out right now and as of yet I am not sure who am I going to use it with IF, but I will see if I can use it with errorlevel.

will keep you posted.

Thanks
Yeah, you might want to use FIND and pipe in the results from VER then use errorlevel to trigger your action.
Avatar of Lee W, MVP
Server 2003 is version 5.2 - see the series of commands below.

C:\Documents and Settings>ver | find /i "Version 5.2"
Microsoft Windows [Version 5.2.3790]

C:\Documents and Settings>echo %errorlevel%
0

C:\Documents and Settings>ver | find /i "Version 5.1"

C:\Documents and Settings>echo %errorlevel%
1

C:\Documents and Settings>
This is a great idea :)

I am heading out right now, because I am going to take one of the tests to my MCITP test 70-238 and I will try this idea as soon I am get home.

Thanks for all the responses.
Two options for you:

for /f "tokens=1 delims=[" %%i in ('ver') do set winver=%%i

On a Windows 2000 workstation this sets winver to: Microsoft Windows 2000
On Windows XP: Microsoft Windows XP
On Vista (amazingly): Microsoft Windows

for /f "tokens=2-3 delims=[." %%i in ('ver') do set winver=%%i.%%j

On a Windows 2000 workstation: Version 5.00
On Windows XP: Version 5.1
On Vista: Version 6.0

I don't have a server handy right now so you will have to see what you get on the kinds of machines you're interested in .

I like the second option.

so would my batch script start with soemthing like this:
for /f "tokens=2-3 delims=[." %%i in ('ver') do set winver=%%i.%%j
if winver=Version 5.00 goto blah1
if winver=Version 5.1 goto blah2
if winver=Version 6.0 goto blah3
Well, you need to dereference the environment variable with percent signs, and quotes are advisable in case you unexpectedly get a blank string back, so

IF "%winver%" EQU "Version 5.00" GOTO blah1

etc


why not explain your complete purpose so we can provide a complete answer?
here's the one I tried:

====================================
ver
IF "%ver%" EQU "Version 5.0" goto Win2K
IF "%ver%" EQU "Version 5.1" goto WinXP
IF "%ver%" EQU "Version 6.0" goto WinVista

Pause
:Win2K
Echo this computer is running windows 2000
Pause
Exit
:WinXP
Echo this computer is running windows XP
Pause
Exit
:WinVista
Echo this computer is running windows vista
Pause
Exit
====================================
and I am getting the result :(


C:\>ver
Microsoft Windows XP [Version 5.1.2600]
C:\>IF "" EQU "Version 5.0" goto Win2K
C:\>IF "" EQU "Version 5.1" goto WinXP
C:\>IF "" EQU "Version 6.0" goto WinVista
C:\>Pause
Press any key to continue . . .
 
ASKER CERTIFIED SOLUTION
Avatar of PaulKeating
PaulKeating
Flag of Netherlands image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
And by the way, for Win2K workstation you need 5.00 not 5.0 ... these are strings you are dealing with, not numbers. So "5.00" is different from "5.0", just as "ABCC" is different from "ABC".
That worked.

you're my hero.

Thanks a lot
PaulKeating:
I need a favor from you.
how can I make this line works with systeminfo insteac of ver to get the service pack level on a windows XP.
what changes need to be made to get this result?
 
I appreciate.