在Windowsbatch file中寻找Unix风格的“getopt”命令行parsing

任何人都可以帮助我find一些parsingWindowsbatch file中的命令行参数,就像在Unix shell脚本中使用getopt / getopts一样? 它不一定都是Posix-y; 只是我可以指定我期望的开关,哪些需要/允许参数。 他们不需要是“长”的开关; 单个字符将工作。

它可以是batch file调用的外部.exe文件。 它必须是免费分发的。

Solutions Collecting From Web of "在Windowsbatch file中寻找Unix风格的“getopt”命令行parsing"

你可以像这样(-h没有参数,所以在这之后没有任何转换,-b和-s需要额外的参数,所以转移它们)。

: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-like命令行参数解析。

批处理文件只知道%0%1%2 ,…和%* (以及%~0%~1等删除引号的变量,arg周围是否有变量)。

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

基本就是这样。


(也许你应该更多地解释你试图用批处理达到什么目的,为什么你必须使用批处理,以及你的其他外部约束是什么。)