Batch file 使用多个命名参数创建批处理文件

Batch file 使用多个命名参数创建批处理文件,batch-file,optional-parameters,named-parameters,Batch File,Optional Parameters,Named Parameters,我需要创建带有多个可选参数的批处理文件 示例 MyTestSqlBatch.bat ServerName DatabaseName [UserId] [Password] [Command] [parameter] 这里的ServerName和DatabaseName是必需的。及 UserId、Password对于Windows身份验证用户是可选的。 Command也是可选参数(有时我需要使用Command参数调用批处理文件以进行Windows身份验证)。如果我想运行批处理文件进行SQL身份验

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

示例

MyTestSqlBatch.bat ServerName DatabaseName [UserId] [Password] [Command] [parameter]
这里的
ServerName
DatabaseName
必需的。及
UserId、Password
对于Windows身份验证用户是可选的。
Command
也是可选参数(有时我需要使用
Command
参数调用批处理文件以进行Windows身份验证)。如果我想运行批处理文件进行SQL身份验证,那么我还想传递用户ID密码

有人能就此提出建议吗?如何创建命名参数(或)处理此问题的最佳方法


谢谢,

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

@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
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
示例:

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234

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

@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
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
示例:

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
更简单:

@echo off
setlocal

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

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

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
示例:

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
详情请参阅。请注意这样一个答案的评论…

更简单:

@echo off
setlocal

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

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

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234
示例:

MyTestSqlBatch.bat -SVR [ServerName] -DB [Database] -Command [value] -Parameter [value] -UserId [value] -Password [value]
MyTestSqlBatch.bat -SVR local -DB SampleDB -UserId sa -Password Test1234
MySqlBatch.bat [SVR=ServerName] [DB=Database] [Command=value] [Parameter=value] [UserId=value] [Password=value]
MySqlBatch.bat SVR=local DB=SampleDB UserId=sa Password=Test1234

详情请参阅。请注意这样一个答案的注释…

%1
%2
等。要传递空参数,请执行
MyTestSqlBatch.bat ServerName DatabaseName“”命令“
;在脚本中,使用
%1
删除引号…还可以使用参数前缀,以避免指定空字符串
%1
%2
等。要传递空参数,请执行
MyTestSqlBatch.bat ServerName DatabaseName“”命令“
;在脚本中,使用
%~1
删除引号…还可以使用参数前缀来避免指定空字符串