将参数输入参数传递给批处理文件

时间:2016-03-17 10:27:51

标签: batch-file cmd command command-line-arguments

这可能是一个简单的问题,但我没有找到任何线索,可能是我错了。

我有一个简单的bat脚本并传递一些参数。目前我正在根据订单得到论据。但是我想让用户变得简单。

我当前的命令行如下所示:testBatch.bat setupip setupuser setuppass 我当前的批处理脚本如下所示:

set setupip=%1
set setupuser=%2
set setuppass=%3
echo I am doing some operation after this based on the input I got.

现在我想修改命令,以免用户不必担心要传递的参数顺序。基本上我想看到这样的命令:testBatch.bat --ip setupip --user setupuser --password setuppass

我的批处理脚本需要做哪些修改?

3 个答案:

答案 0 :(得分:2)

你正在寻找的是被称为“命名的论据”。我找到了相同问题here的链接。

答案我喜欢的链接如下:

set c=defaultC
set s=defaultS
set u=defaultU

:initial
if "%1"=="" goto done
echo              %1
set aux=%1
if "%aux:~0,1%"=="-" (
   set nome=%aux:~1,250%
) else (
   set "%nome%=%1"
   set nome=
)
shift
goto initial
:done

echo %c%
echo %s%
echo %u%

运行以下命令:

arguments.bat -c users -u products

将生成以下输出:

users
defaultS
products

答案 1 :(得分:2)

试试这个:

@echo off


for %%a in (%*) do (
    call set "%%~1=%%~2"
    shift
)

echo :%--user%
echo :%--pass%

如果传递它被称为:

namedArgs.bat --user user --pass pass

输出将如下:

  

:用户

     

:通

这将处理带引号的带引号的参数。

答案 2 :(得分:1)

有一个名为shift的批处理命令,基本上可以在参数变量上进行左移。

因此,作为脚本的开头,您需要一个循环

在该循环内,使用if语句解码选项'动词'部分的%1

if块内,您拨打shift。然后旧的%2成为新的%1,旧的%3成为新的%2等等

所以如果需要的话,你可以在动词中选择一个辅助参数。然后再次致电shift

循环,直到你的参数为空。 Tadah!