4

コマンドライン引数のいずれかがに等しいかどうかを最初にテストするWindowsバッチスクリプトを作成したいと思います/?。そうである場合は、ヘルプメッセージを表示して終了します。そうでない場合は、残りのスクリプトコードを実行します。私は以下を試しました:

@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ループは引数を無視しているように見えます/?。誰かがこの問題へのアプローチを提案できますか?

4

2 に答える 2

11

このような何かがうまくいくはずです:

@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 に感謝します。提供された引数

于 2012-12-03T13:49:48.500 に答える
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
于 2012-12-03T13:44:22.310 に答える