如何在Batch中将多个参数转换为单个参数?

时间:2018-05-21 00:15:55

标签: batch-file parameters uri protocols

这个主题很难解释,所以试着理解它。我正在开发一个名为RoSOX的项目,它使用URI加入服务器(另一端) 但是,此批处理程序至少需要3个参数。如果您要在Windows命令提示符下运行它,则可以像 RoSOXLauncher.bat“IPHere”“PortHere”“UsernameHere” 那样运行它。这是获取这些值的代码(不是整个程序)

@echo off
set ip=%~1
set port=%~2
set username=%~3

不幸的是,我发现另一个帖子提到URI Protocols(也就是允许从您的Web浏览器启动程序的注册表项,例如“ mailto:example@example.com ”)只接受1个参数不管节目如何。我绕过这个的理论是用逗号连接输入,因此它被认为是一个参数。它将被写成: RoSOXLauncher.bat IPHere PortHere 用户名这里< / strong> 一个例子是this.对数将是

  • 从逗号中删除值(可能使用FOR命令)
  • 取每个值并将其放入自己的变量
  • 继续完成脚本的其余部分

有谁知道这个对数是如何在批处理中写的?这是阻止我正确运行程序的唯一因素。

1 个答案:

答案 0 :(得分:0)

似乎很不清楚你想要什么,但如果我理解你的要求那么:

@echo off
set ip=%~1
set port=%~2
set username=%~3

如果你这样做仍然可以:

RoSOXLauncher.bat IPHere,PortHere,UsernameHere

仅仅因为除外的分隔符是whitespace,逗号和分号。你可以试一试,亲自看看。

RoSOXLauncher.bat IPHere;PortHere;UsernameHere
RoSOXLauncher.bat IPHere PortHere UsernameHere

也会这样做。

另一方面,您发送参数的程序也可以用空格,命令或分号分隔,然后您可以简单地使用另一个常用分隔符,如-:,请参阅:< / p>

@echo off
for /f "tokens=1-3 delims=-" %%i in ("%~1") do (
  echo ip %%i
  echo port %%j
  echo username %%k
)

您可以使用以下方式运行:

RoSOXLauncher.bat IPHere-PortHere-UsernameHere

@echo off
for /f "tokens=1-3 delims=:" %%i in ("%~1") do (
  echo ip %%i
  echo port %%j
  echo username %%k
)

你可以运行:

RoSOXLauncher.bat IPHere:PortHere:UsernameHere