0

I'm working with a fairly simple batch file in Windows 7, where I want to be able to define a few variables and then use them in a command. This is the code I have so far:

@ECHO OFF
set $servertype=IIS
set $servername=MJNHNX4
set $folder=C:\Logfiles
set $database=Perfmoncounters
if $servertype=IIS 
   C:\Program Files (x86)\Log Parser 2.2\logparser.exe "Select * into IISCounters from "$folder\IIS_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON
if $servertype=SQL
   C:\Program Files (x86)\Log Parser 2.2\logparser.exe "Select * into SQLCounters from "$folder\SQL_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON
if $servertype=Client
   C:\Program Files (x86)\Log Parser 2.2\logparser.exe "Select * into ClientCounters from "$folder\Client_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON

However when I run it, it says "=IIS was unexpected at this time". Is my If statement badly formatted?

Sean Long
  • 2,163
  • 9
  • 30
  • 49

4 Answers4

1

This is untested but includes some elements to fix the syntax and make the tests more robust.

@ECHO OFF
set $servertype=IIS
set $servername=MJNHNX4
set $folder=C:\Logfiles
set $database=Perfmoncounters
if "%$servertype%"=="IIS" (
   "C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "Select * into IISCounters from "$folder\IIS_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON
)
if "%$servertype%"=="SQL" (
   "C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "Select * into SQLCounters from "$folder\SQL_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON
)
if "%$servertype%"=="Client" (
   "C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "Select * into ClientCounters from "$folder\Client_Log.csv"" -i:CSV -o:SQL -server:$servername -database:$database -driver:"SQL Server" -fixcolnames:ON -createTable:ON
)
foxidrive
  • 40,353
  • 10
  • 53
  • 68
  • I accepted this answer, but there were a couple of changes needed to make it actually work. Here's the final code that ended up working: `@echo off set $servertype=IIS set $servername=MJNHNX4 set $folder=C:\Logfiles set $database=Perfmoncounters set $logparser=C:\Program Files (x86)\Log Parser 2.2\logparser.exe if %$servertype%==IIS "%$logparser%" "Select * into IISCounters from %$folder%\IIS_Log.csv" -i:CSV -o:SQL -server:%$servername% -database:%$database% -driver:"SQL Server" -fixcolnames:ON -createTable:ON` – Sean Long May 31 '13 at 15:05
0

It sounds from the error as though your IF statement is at fault - try using

if $servertype==IIS

since == is used for comparisons.

Source: http://www.robvanderwoude.com/ntif.php

FarmerGedden
  • 1,162
  • 10
  • 23
0

enter code hereYour notation is a little off.

To set, use set servertype=IIS

Note the spacing, the single = and lack of $.

To use, use %ISS%.

Note that %0 to %9 are the command line arguments to the batch file.

An if statement requires ==; e.g. if %variable%==2

Bathsheba
  • 231,907
  • 34
  • 361
  • 483
0

The correct syntax is

if %$servertype%==IIS command

%var% returns the value of variable var

== is a valid equivalence oprator for strings

The command must start on the same line as the IF

The "full filename" (from the drive specifier C: to the end of the executable name .exe) must be quoted using rabbits-ears (")

Magoo
  • 77,302
  • 8
  • 62
  • 84