1

良い一日、

私はまだバッチファイルに少し慣れていないので、C ++とJavaから来て、いくつかのことが異なります...

サブバッチを呼び出すメインバッチがありますが、それが戻ると、else ループに入ります。理由がわかりません。

ユーザーが選択するメイン バッチとオプション:

set /p input=Enter:

if %input%==1 goto check
if %input%==2 goto check
if %input%==3 goto check
if %input%==4 goto delete
if %input%==A call %cd%\subbatch.bat %var1% %var2%\
if %input%==B call %cd%\subbatch2.bat %var1% %var2%
if %input%==C call %cd%\subbatch3.bat %var1% %var2% 
if {%input%}=={} (
    echo.
    echo Please enter a valid option
    echo.
    pause >nul
) else (
    echo %input%
    echo.
    echo Please enter a valid option
    echo.
    pause >nul
)

サブバッチに移動し、戻るとelseループに入り、

何が選択されたかを確認するために、else ループに echo %input% を追加しました。

どちらを選択したかに応じて、入力がABまたはCであったことを示しています。

ただし、1-4 または AC 以外のオプションが選択された場合にのみ、else コマンドが作動するようにしたいと考えていました。

試してみたほうがいいでしょう:

if %input% GTR 4 (echo enter valid option)

しかし、私がそうすると、文字はどうなりますか?

文字を比較する方法はありますか?そのような:

if %input% GTR "C" ( ....)
4

1 に答える 1

1

この種のメニューでは、choiceコマンドを使用して必要なオプションのみを許可することをお勧めします。

しかし

実行がifのelse部分に入るのはなぜですか。それはそれが言うことだからです。チェックはis input empty ?、ユーザーが何かを選択した場合、入力が空ではないため、if 条件が false であり、else が実行されます。

の構造を維持したい場合はif else、このようにしたほうがよい

if "%input%=="a" (
    ....
) else if "%input%"=="b" (
    ....
) else if "%input%"=="1" (
    ....
) else (
    rem AND HERE falls the bad options
)
于 2013-10-28T16:08:01.190 に答える