Batch中如何把多个参数变成一个参数?

How to turn multiple parameters into a single parameter in Batch?

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

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

不幸的是,我发现另一个 post 提到了 URI 协议(又名注册表条目,允许从您的网络浏览器启动程序,例如“mailto:example@example.com ") 无论程序如何,只接受 1 个参数。我绕过这个的理论是让输入用逗号连接,所以它被认为是一个参数。它会这样写:RoSOXLauncher.bat IPHere,PortHere ,用户名在这里 一个例子是 this. 对数是

有谁知道这个对数在Batch中是怎么写的?这是唯一阻止我的程序 运行 正确的原因。

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

@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

也会这样做。

另一方面,您发送参数的程序也可能由空格、命令或分号分隔,那么您可以简单地使用另一个常见的分隔符,如 -: 看这个:

@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