Batch file 解析Windows批处理文件参数

Batch file 解析Windows批处理文件参数,batch-file,Batch File,我用它来识别一组批处理文件顶部的帮助参数。有没有更简单的方法,或者这是最好的方法 @Echo Off if "%1" == "" Goto Usage if "%1" == "-?" Goto Usage if "%1" == "/?" Goto Usage if "%1" == "/help" Goto Usage if "%1" == "-help" Goto Usage if "%1" == "/Help" Goto Usage 你不能把它缩短: if "%~1" == "" Goto

我用它来识别一组批处理文件顶部的帮助参数。有没有更简单的方法,或者这是最好的方法

@Echo Off
if "%1" == "" Goto Usage
if "%1" == "-?" Goto Usage
if "%1" == "/?" Goto Usage
if "%1" == "/help" Goto Usage
if "%1" == "-help" Goto Usage
if "%1" == "/Help" Goto Usage

你不能把它缩短:

if "%~1" == "" Goto Usage if "%~1" == "-?" Goto Usage if "%~1" == "/?" Goto Usage if /i "%~1" == "/help" Goto Usage if "%~1" == "-help" Goto Usage
你不能把它缩短:

if "%~1" == "" Goto Usage if "%~1" == "-?" Goto Usage if "%~1" == "/?" Goto Usage if /i "%~1" == "/help" Goto Usage if "%~1" == "-help" Goto Usage
至少/i比我所拥有的进步了一步,谢谢。而且你的~%1更准确了至少/i比我所拥有的进步了一步,谢谢。而且你的~%1更accurate@JubjubBandersnatch我以发明者“method Aacini”[请不要太认真:)]的名字来称呼它,你需要
延迟扩展
@endro-早在Aacini出现之前,我就已经看到了这项基本技术来检查DosTips上发布的值列表。如果有很多人独立提出这个想法,我也不会感到惊讶。但这是一个古老的概念。是的,当然。这就是为什么我要求你不要把它当回事。请解释一下魔法?!第4行的冒号对我来说是新的,我没有在!!quotes.啊,明白了:我应该把第4行理解为:展开help变量,用空格替换%1,并将结果与原始结果进行比较。如果替换导致了差异,那么%%1是%help%的子字符串。@jubbandersnatch我用它的发明者“method Aacini”来称呼它[请不要太认真:)]你需要
delayed expansion
@endro-早在Aacini出现之前,我就已经看到了这个基本的技术来检查DosTips上发布的值列表。如果有很多人独立提出这个想法,我也不会感到惊讶。但这是一个古老的概念。是的,当然。这就是为什么我要求你不要把它当回事。请解释一下魔法?!第4行的冒号对我来说是新的,我没有在!!quotes.啊,明白了:我应该把第4行理解为:展开help变量,用空格替换%1,并将结果与原始结果进行比较。如果替换导致差异,则%%1是%help%的子字符串。
setlocal enableDelayedExpansion
set "help= -? /? -help /help "
if "%~1" equ "" goto Usage
if "!help: %~1 =!" neq "%help%" goto Usage