2015-02-13

コマンドプロンプトで、入力に応じて処理を変えたい。おまけで文字列入力もね。

コマンドプロンプトで、コマンドの入力結果に応じて処理を変えたいときに。


こんな感じ。テキストエディタに貼り付けて保存し、拡張子を bat か cmd に変えて実行すれば動きます。

@echo off

echo select a command
echo a --- description about command a
echo b --- description about command b
echo:
set CMD=
set /p CMD=">"
if "%CMD%" equ "a" (
  goto CmdA
) else if "%CMD%" equ "b" (
  goto CmdB
) else (
  goto CmdDefault
)

:CmdA
echo command a
pause > nul
goto End

:CmdB
echo command b
pause > nul
goto End

:CmdDefault
echo no-command
pause > nul
goto End

:End


肝となっているのは、文字列入力の部分。この入力値に応じて if 文で分岐しているだけ。

set /p CMD=">"

下みたいにして動かしてみれば、文字列入力が行えてることがよくわかるかと。

@echo off

set CMD=
set /p CMD=">"
echo input: %CMD%

pause > nul


また、デフォルトコマンドを指定したい場合には、あらかじめコマンドを SET すれば問題なし。
下記のようにすると、コマンド "a" がデフォルトになる。(コマンド入力が何もなく、Enter が押された場合に発生。)

...
set CMD=a
...


もっとコマンドを増やしたければ、else if の部分を、コマンド "b" を参考に増やしてあげれば問題なし。

0 件のコメント :

コメントを投稿