windows - 如何在 Windows 批处理脚本中获取可选的命令行参数值作为字符串?

标签 windows batch-file

给定一个可选的端口参数,其中端口号的长度可以变化,我如何从批处理脚本的命令行参数中获取端口号?

例子:

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/

相关文章:

java - 如何检查批处理文件中是否已安装java的PATH变量

c++ - WINAPI RegisterApplicationRestart 不清除打开的套接字

windows - 如何使用 powershell 显示带有驱动器号的附加 USB 设备

windows - 检测确切的 Windows 10 版本以在批处理文件中回显彩色文本

string - 用于测试脚本是否包含字母和数字以外的任何内容的批处理代码

windows - VLC 保存流到文件

batch-file - 从上下文菜单复制文件的父目录路径

python - Microsoft Compilers for Python 2.7..无法下载,我应该使用哪个更高版本?

c# - 在详细部分删除 Crystal 报告中的额外行

windows - 在 Visual Studio 中使用构建后事件构建控制台