在Windows批处理文件中寻找Unix风格的'getopt'命令行解析

问题描述 投票:5回答:2

任何人都可以帮我找到解析Windows批处理文件中的命令行参数的方法,就像在Unix shell脚本中使用getopt / getopts一样吗?它不一定都是Posix-y;只是我可以指定我期望的开关,其中哪些需要/允许参数。它们不需要是“长”开关;单个字符将起作用。

它可以是批处理文件调用的外部.exe。它必须是可自由分发的。

windows parsing batch-file command-line cmd
2个回答
13
投票

你可以这样的东西(-h没有args,因此之后没有移位,-b和-s需要额外的args,所以移动它们)。

:GETOPTS
 if /I "%1" == "-h" goto Help
 if /I "%1" == "-b" set BASE=%2 & shift
 if /I "%1" == "-s" set SQL=%2 & shift
 shift
if not "%1" == "" goto GETOPTS

1
投票

正如您从Unix / Linux中所知,没有像getopt / getopts这样的解析命令行参数。

批处理文件只知道%0%1%2,...和%*(和%~0%~1 ......这样的变化删除引号,如果arg周围有那些)。

最多九个参数。如果还有更多需要处理的话,你可以使用shift(如果发生shift /1,则等于q​​azxswpoi)删除第一个arg并移动其余的arg。

基本上就是这样。


(也许您应该更详细地解释您要使用批处理实现的目标,为什么必须使用批处理,以及您的其他外部约束是什么。)

© www.soinside.com 2019 - 2024. All rights reserved.