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

Mic*_*ell 5 windows command-line parsing cmd batch-file

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

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

小智 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
Run Code Online (Sandbox Code Playgroud)


Kur*_*fle 1

正如您在 Unix/Linux 中所知,不存在类似于 getopt/getopts 的命令行参数解析。

批处理文件只知道%0, %1, %2, ... 和%*(以及诸如 %~0, %~1... 之类的变体,如果参数周围有引号,它会删除引号)。

最多九个参数。如果还有更多需要处理,您可以使用shift(相当于shift /1ifenableextensions发生)删除第一个参数并移动其余的。

基本上就是这样。


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