给定一个可选的端口参数,其中端口号的长度可以变化,我如何从批处理脚本的命令行参数中获取端口号?
例子:
foo.bat --foo bar --port 80 --bar foo
应该输出:
80
我走到这一步,尝试使用子字符串。
set CMD_LINE_ARGS=%*
@rem Remove all chars and port arg
set PORT_ARG_REMOVED=%CMD_LINE_ARGS:*-port =%
@rem Obviously, this is where I fail to remove trailing chars
set PORT_NUM=%PORT_ARG_REMOVED: *=%
echo %PORT_NUM%
编辑
我选择的答案是因为它符合我非常特殊的用例,其中所有参数都被传递到我包装的命令。而且,我只需要特定可选参数的值。无需循环。
这里有一些非常好的答案,用于处理一般的可选参数解析。因此,请随时为每个人投票。
最佳答案
鉴于您“真的很想看到子字符串起作用”,这里是按照您的预期结构化和编码的脚本。
@Set "CMD_LINE_ARGS=%*"
@Rem Remove all chars and port arg
@Set "PORT_ARG_REMOVED=%CMD_LINE_ARGS:*-port =%"
@Rem Remove trailing chars
@Set "PORT_NUM=%PORT_ARG_REMOVED: ="&:"%"
@Echo %PORT_NUM%
@Pause
关于windows - 如何在 Windows 批处理脚本中获取可选的命令行参数值作为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543968/