【问题标题】:Variable usage in batch file批处理文件中的变量用法
【发布时间】:2013-05-27 10:11:20
【问题描述】:

我正在使用 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 语句是否格式错误?

【问题讨论】:

    标签: batch-file scripting


    【解决方案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
    )
    

    【讨论】:

    • 我接受了这个答案,但需要进行一些更改才能使其真正起作用。这是最终工作的最终代码:@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 if %$servertype%==IIS "%$logparser%" "Select * into IISCounters from %$folder%\IIS_Log.csv" -i:CSV -o:SQL -server:%$servername% -database:%$database% -driver:"SQL Server" -fixcolnames:ON -createTable:ON
    【解决方案2】:

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

    if $servertype==IIS
    

    因为 == 用于比较。

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

    【讨论】:

      【解决方案3】:

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

      要设置,请使用set servertype=IIS

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

      要使用,请使用%ISS%

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

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

      【讨论】:

        【解决方案4】:

        正确的语法是

        if %$servertype%==IIS command
        

        %var%返回变量var的值

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

        命令必须与IF在同一行开始

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-16
          • 1970-01-01
          • 2016-06-17
          • 1970-01-01
          • 2018-03-25
          • 2010-10-23
          • 2018-01-14
          • 2017-06-11
          相关资源
          最近更新 更多