如果任何命令行参数等于/?则显示帮助消息

时间:2012-12-03 13:28:27

标签: batch-file cmd

我希望编写一个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循环显示忽略/?参数。任何人都可以建议一个解决这个问题的方法吗?

2 个答案:

答案 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