批处理文件中的变量用法

时间:2013-05-31 14:35:03

标签: batch-file scripting

我正在使用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 个答案:

答案 0 :(得分: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
)

答案 1 :(得分:0)

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

if $servertype==IIS

因为==用于比较。

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

答案 2 :(得分:0)

enter code here你的记谱有点过了。

要设置,请使用set servertype=IIS

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

要使用,请使用%ISS%

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

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

答案 3 :(得分:0)

正确的语法是

if %$servertype%==IIS command

%var%返回变量var

的值

==是字符串

的有效等效操作符

该命令必须与IF

在同一行开头

必须使用兔子耳朵(C:)引用“完整文件名”(从驱动器说明符.exe到可执行文件名"的末尾)