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". 我的 If 语句的格式是否错误?

4

4 回答 4

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
)
于 2013-05-31T14:40:19.477 回答
0

从错误中听起来好像您的 IF 语句有问题 - 尝试使用

if $servertype==IIS

因为 == 用于比较。

资料来源:http ://www.robvanderwoude.com/ntif.php

于 2013-05-31T14:40:16.657 回答
0

enter code here你的符号有点不对劲。

要设置,请使用set servertype=IIS

请注意间距、单个 = 和缺少 $。

要使用,请使用%ISS%.

请注意,%0 到 %9 是批处理文件的命令行参数。

if 语句需要 ==; 例如,如果%variable%==2

于 2013-05-31T14:40:40.260 回答
0

正确的语法是

if %$servertype%==IIS command

%var%返回变量的值var

==是字符串的有效等价运算符

该命令必须与IF

“完整文件名”(从驱动器说明符C:到可执行文件名的结尾.exe)必须使用 rabbits-ears ( ")引用

于 2013-05-31T14:43:20.290 回答