我希望编写一个Windows Batch脚本,首先测试是否有任何命令行参数等于/?
。如果是,则显示帮助消息并终止,否则执行其余的脚本代码。我尝试过以下方法:
@echo off
FOR %%A IN (%*) DO (
IF "%%A" == "/?" (
ECHO This is the help message
GOTO:EOF
)
)
ECHO This is the rest of the script
这似乎不起作用。如果我将脚本更改为:
@echo off
FOR %%A IN (%*) DO (
ECHO %%A
)
ECHO This is the rest of the script
并将其称为testif.bat arg1 /? arg2
我得到以下输出:
arg1
arg2
This is the rest of the script
FOR
循环显示忽略/?
参数。任何人都可以建议一个解决这个问题的方法吗?
答案 0 :(得分:9)
这样的事情可以解决问题:
@echo off
IF [%1]==[/?] GOTO :help
echo %* |find "/?" > nul
IF errorlevel 1 GOTO :main
:help
ECHO You need help my friend
GOTO :end
:main
ECHO Lets do some work
:end
感谢@jeb指出错误,如果只是/? arg提供了
答案 1 :(得分:0)
不要使用FOR循环,而是使用以下代码:
@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
IF "%1" == "/?" (
ECHO This is the help message
GOTO:EOF
)
SHIFT
GOTO Loop
:Continue
ECHO This is the rest of the script
:EOF