Batch file 批处理文件中的变量用法
我在Windows7中使用一个相当简单的批处理文件,我希望能够定义一些变量,然后在命令中使用它们。这是我目前掌握的代码:Batch file 批处理文件中的变量用法,batch-file,scripting,Batch File,Scripting,我在Windows7中使用一个相当简单的批处理文件,我希望能够定义一些变量,然后在命令中使用它们。这是我目前掌握的代码: @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 "Selec
@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此时是意外的”
。我的If语句格式是否不正确?从错误中听起来,好像If语句有错误-请尝试使用
if $servertype==IIS
因为==用于比较
来源:这是未经测试的,但包含一些元素来修复语法并使测试更加健壮
@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
)
在此处输入code
您的符号有点不正确
要设置,请使用set servertype=IIS
请注意间距、单个=和缺少$
要使用,请使用%ISS%
请注意,%0到%9是批处理文件的命令行参数
if语句需要==;例如
如果%variable%==2
正确的语法是
if %$servertype%==IIS command
%var%
返回变量var
=
是字符串的有效等价运算符
如果
“完整文件名”(从驱动器说明符
C:
到可执行文件名的末尾.exe
)必须使用兔子耳朵(“
)引用我接受了这个答案,但要使它真正起作用,还需要做一些修改。最后的代码是:@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如果%$servertype%=IIS”%$logparser%''从%$folder%\IIS_Log.csv“-i:csv-o:SQL-server:%%$servername%-数据库:%%$database%-驱动程序:“SQL server”-fixcolnames:ON-createTable:ON