プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windows、バッチファイルでユーザの入力を要求する
結論から書けば、setコマンドを使って

set /P IN_STR="なんか入力してください:"

とかすればOKです。
変数「IN_STR」に入力された文字列が入ってきます。

サンプルコードはこんな感じですねφ(--)

@echo off

set /P IN_STR="なんか入力してください:"

echo 入力文字列:%IN_STR%

pause

注意点として「IN_STR」の部分は、既存の環境変数と被らないようにしてください。
例えば

set /P PATH="なんか入力してください:"

のようにしてはいけません。

……結論から書けばも何も、これだけでした(^^ゞ

一応解説しておくと、setコマンドは環境変数を設定するコマンドです。
「/P」オプションは、環境変数に設定する値を画面入力から受け付けるオプションです。

試しにコマンドプロンプトを起動して

set /P hoge=

と入力してみてください。
エンターキーを押すと、改行されて入力待ちになります。

20140913-04.png


この状態で、例えば

str1

と入力してエンターキーを押したとします。
この時点では特に変わりはありません。

20140913-05.png


さて、この状態で以下のコマンドを実行してみましょう。

echo %hoge%

そうすると

str1

が表示されるはずです。

20140913-06.png


まぁ、何が言いたいかというとですね。
setコマンドは、環境変数を設定するコマンドなのですよ。

最初の方で

変数「IN_STR」に入力された文字列が入ってきます。

と書きましたが、正確には

環境変数「IN_STR」に入力された文字列が入ってきます。

なのです。
そのため「既存の環境変数と被らないようにしてください」と注意しました。
既存の環境変数を上書きしちゃって、思わぬ動作をする可能性がありますからね。

ちなみに

set /P hoge=

の「=」の後ろに続けて文字を書くと、その部分が改行時に表示されます。

例えば

set /P hoge=hogeへの設定値:

と書くと、こんな状態になりますφ(--)

20140913-07.png


この状態で

str1

と入力してエンターキーを押すと、こんな見た目になりますφ(--)

20140913-08.png


さらにこの状態で

echo %hoge%

を入力すると、こんな風になりますφ(--)

20140913-09.png


ユーザからの入力が(環境)変数に設定されて、
設定された文字列が表示されましたね。

この一連の流れをバッチファイルでやったのが、最初に書いたサンプル

@echo off

set /P IN_STR="なんか入力してください:"

echo 入力文字列:%IN_STR%

pause

です。

繰り返しになりますが、ユーザの入力が設定されるのは環境変数に対してです。
例えば、こんなサンプルコードを実行すると?φ(--)

@echo off

echo OS=%OS%

set /P OS="なんか入力してください:"

echo OS=%OS%

pause

こんな結果になりますよφ(--)

20140913-10.png


環境変数「OS」が上書きされちゃいましたね。
実害が出ることは少ないでしょうが、一応意識しておいてください。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事