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?

4 Answers 4

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
)
Sign up to request clarification or add additional context in comments.

1 Comment

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
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

Comments

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

Comments

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 (")

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.