【问题标题】:Create batch file with multiple named parameters创建具有多个命名参数的批处理文件
【发布时间】:2019-07-20 19:57:33
【问题描述】:

我需要创建具有多个可选参数的批处理文件。

示例

MyTestSqlBatch.bat ServerName DatabaseName [UserId] [Password] [Command] [parameter]

这里ServerNameDatabaseName强制性。和 UserId, Password 对于 Windows 身份验证用户是可选的。 Command 也是可选参数(有时我需要使用Command 参数调用批处理文件以进行Windows 身份验证)。如果我想运行我的批处理文件进行 SQL 身份验证,那么我也想传递 UserId 密码

任何人都可以就此提出建议,如何创建命名参数(或)任何最佳方式来处理这个问题?

谢谢,

【问题讨论】:

  • %1 %2 等..
  • 要传递空参数,请执行MyTestSqlBatch.bat ServerName DatabaseName "" "" "Command";在脚本中使用 %~1 删除引号...
  • 您也可以为参数使用前缀以避免指定空字符串

标签: batch-file optional-parameters named-parameters


【解决方案1】:

更简单:

@echo off
setlocal

set "params=%*"
set "%params: =" & set "%"

echo Server       : %SVR%
echo Database     : %DB%
echo Command      : %Command% %Parameter%
echo UserId       : %UserId%
echo Password     : %Password%

语法:

MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]

示例:

MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234

更多详情请访问Split string with string as delimiter。在这样的回答中注意评论...

【讨论】:

    【解决方案2】:

    我已经创建了带有命名参数和可选参数的批处理文件。

    @echo off
    setlocal
    set SVR=%1
    set DB=%2
    
    
    set uid=
    set pwd=
    set CM=
    set CP=
    
    :loop
    IF NOT "%1"=="" (
        IF "%1"=="-SVR" (
            SET SVR=%2
            SHIFT
        )
        IF "%1"=="-DB" (
            SET DB=%2
            SHIFT
        )
    
        IF "%1"=="-UserId" (
            SET uid=%2
            SHIFT
        )
        IF "%1"=="-Password" (
            SET pwd=%2
            SHIFT
        ) 
        IF "%1"=="-Command" (
            SET CM=%2
            SHIFT
        )
        IF "%1"=="-Parameter" (
            SET CP=%2
            SHIFT
        )
        SHIFT
        GOTO :loop
    )
    
    echo Server       : %SVR%
    echo Database     : %DB%
    
    echo Command      : %CM% %CP%
    
    echo UserId : %uid%
    echo Password : %pwd%
    

    语法:

    MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
    

    示例:

    MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      • 2014-03-02
      相关资源
      最近更新 更多