Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件中的变量用法_Batch File_Scripting - Fatal编程技术网

Batch file 批处理文件中的变量用法

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

我在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 "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