• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 510
  • Last Modified:

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
0
Medquest
Asked:
Medquest
  • 6
  • 4
  • 2
  • +1
1 Solution
 
Alan_WhiteCommented:
Have you played around with VER?
 
This will give you the string of the installed OS, you could use that in your IF statement.
0
 
MedquestAuthor Commented:
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
0
 
Alan_WhiteCommented:
Yeah, you might want to use FIND and pipe in the results from VER then use errorlevel to trigger your action.
0
Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

 
Lee W, MVPTechnology and Business Process AdvisorCommented:
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>
0
 
MedquestAuthor Commented:
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.
0
 
PaulKeatingCommented:
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 .

0
 
MedquestAuthor Commented:
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
0
 
PaulKeatingCommented:
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


0
 
Lee W, MVPTechnology and Business Process AdvisorCommented:
why not explain your complete purpose so we can provide a complete answer?
0
 
MedquestAuthor Commented:
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 . . .
 
0
 
PaulKeatingCommented:
ver
IF "%ver%" EQU "Version 5.0" goto Win2K

That won't work. It doesn't put the value you want in the environment variable VER. It just runs the command VER and sends the output to the screen. That won't magically assign a value to an environment variable. That needs an explicit SET statement.

Please follow the recipe exactly until you understand what it does. Instead of the first line, put

for /f "tokens=2-3 delims=[." %%i in ('ver') do set ver=%%i.%%j
0
 
PaulKeatingCommented:
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".
0
 
MedquestAuthor Commented:
That worked.

you're my hero.

Thanks a lot
0
 
MedquestAuthor Commented:
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.
0

Featured Post

[Webinar] Database Backup and Recovery

Does your company store data on premises, off site, in the cloud, or a combination of these? If you answered “yes”, you need a data backup recovery plan that fits each and every platform. Watch now as as Percona teaches us how to build agile data backup recovery plan.

  • 6
  • 4
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now