任何人都可以帮我找到解析Windows批处理文件中的命令行参数的方法,就像在Unix shell脚本中使用getopt / getopts一样吗?它不一定都是Posix-y;只是我可以指定我期望的开关,其中哪些需要/允许参数。它们不需要是“长”开关;单个字符将起作用。
它可以是批处理文件调用的外部.exe。它必须是可自由分发的。
你可以这样的东西(-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
正如您从Unix / Linux中所知,没有像getopt / getopts这样的解析命令行参数。
批处理文件只知道%0
,%1
,%2
,...和%*
(和%~0
,%~1
......这样的变化删除引号,如果arg周围有那些)。
最多九个参数。如果还有更多需要处理的话,你可以使用shift
(如果发生shift /1
,则等于qazxswpoi)删除第一个arg并移动其余的arg。
基本上就是这样。
(也许您应该更详细地解释您要使用批处理实现的目标,为什么必须使用批处理,以及您的其他外部约束是什么。)