2013-07-09 3 views
0

У меня есть это для распознавания параметра справки в верхней части каждого из набора пакетных файлов. Есть ли более быстрый способ, или это так хорошо, как получается?Анализ параметров пакетного файла Windows

@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 

ответ

2

Вы не можете сделать его короче:

 
if "%~1" == "" Goto Usage 
if "%~1" == "-?" Goto Usage 
if "%~1" == "/?" Goto Usage 
if /i "%~1" == "/help" Goto Usage 
if "%~1" == "-help" Goto Usage 

if /i означает игнорирование дела. "%~1", чтобы избежать двойных двойных кавычек.

Вы можете запросить все полезные ответы и goto usage в конце:

 
if /i "%~1" == "a" Goto :doit_a 
if /i "%~1" == "b" Goto :doit_b 
if /i "%~1" == "c" Goto :doit_c 
goto :Usage 
+0

по крайней мере,/я является шагом вперед на то, что у меня было, спасибо. И ваш ~% 1 более точный –

2
setlocal enableDelayedExpansion 
set "help= -? /? -help /help " 
if "%~1" equ "" goto Usage 
if "!help: %~1 =!" neq "%help%" goto Usage 
+0

Это волшебство. – mojo

+0

@JubjubBandersnatch Я называю это после своего изобретателя «метод Aacini» [просьба не относиться слишком серьезно :)], и вам нужно «отсроченное расширение». – Endoro

+0

@Endoro - Я видел эту основную технику, чтобы проверить список значений, размещенных на DosTips задолго до того, как Aacini выскочит на сцену. Я не удивлюсь, если многие люди придумают эту идею самостоятельно. Но это старая концепция. – dbenham

Смежные вопросы