2013-05-31 6 views
0

Я работаю с довольно простым командным файлом в Windows 7, где я хочу иметь возможность определять несколько переменных, а затем использовать их в команде. Это код, который я до сих пор:Использование переменной в пакетном файле

@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 

Однако, когда я запускаю его, он говорит "=IIS was unexpected at this time". Является ли заявление «Мой» плохо отформатированным?

ответ

1

Это непроверенное, но включает в себя некоторые элементы, чтобы исправить синтаксис и сделать тесты более надежными.

@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 
) 
+0

Я принял этот ответ, но там было несколько изменений необходимо, чтобы сделать его фактически произведение. Вот окончательный код, который в конечном итоге работает: '@echo от множество $ ServerType = IIS набор $ ServerName = MJNHNX4 набор $ папка = C: \ LogFiles множества $ базы данных = Perfmoncounters набор $ LogParser = C: \ Program Файлы (x86) \ Log Parser 2.2 \ logparser.exe if% $ servertype% == IIS "% $ logparser%" "Выбрать * в IISCounters из папки% $% \ IIS_Log.csv" -i: CSV -o: SQL -server:% $ servername% -database:% $ database% -driver: "SQL Server" -fixcolnames: ON -createTable: ON' –

0

Это звучит с ошибкой, как если бы ваш IF заявление виноват - попробуйте использовать

if $servertype==IIS 

поскольку == используется для сравнения.

Источник: http://www.robvanderwoude.com/ntif.php

0

enter code here Ваши обозначения немного не включены.

Для установки используйте set servertype=IIS

Обратите внимание на пробелы, единственный = и отсутствие $.

Для использования используйте %ISS%.

Обратите внимание, что% 0 до% 9 являются аргументами командной строки для командного файла.

Оператор if требует ==; например если %variable%==2

0

Правильный синтаксис

if %$servertype%==IIS command 

%var% возвращает значение переменной var

== является допустимым эквивалентность oprator для струнных

Команда должна начинаться на той же строке, IF

«полное имя» (от привода спецификатора C: к концу имени исполняемого файла .exe) должно быть указано с использованием кроликов ушей (")

Смежные вопросы