2014.
09.
13
15:14:22
結論から書けば、setコマンドを使って
とかすればOKです。
変数「IN_STR」に入力された文字列が入ってきます。
サンプルコードはこんな感じですねφ(--)
注意点として「IN_STR」の部分は、既存の環境変数と被らないようにしてください。
例えば
のようにしてはいけません。
……結論から書けばも何も、これだけでした(^^ゞ
一応解説しておくと、setコマンドは環境変数を設定するコマンドです。
「/P」オプションは、環境変数に設定する値を画面入力から受け付けるオプションです。
試しにコマンドプロンプトを起動して
と入力してみてください。
エンターキーを押すと、改行されて入力待ちになります。

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

さて、この状態で以下のコマンドを実行してみましょう。
そうすると
が表示されるはずです。

まぁ、何が言いたいかというとですね。
setコマンドは、環境変数を設定するコマンドなのですよ。
最初の方で
と書きましたが、正確には
なのです。
そのため「既存の環境変数と被らないようにしてください」と注意しました。
既存の環境変数を上書きしちゃって、思わぬ動作をする可能性がありますからね。
ちなみに
の「=」の後ろに続けて文字を書くと、その部分が改行時に表示されます。
例えば
と書くと、こんな状態になりますφ(--)

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

さらにこの状態で
を入力すると、こんな風になりますφ(--)

ユーザからの入力が(環境)変数に設定されて、
設定された文字列が表示されましたね。
この一連の流れをバッチファイルでやったのが、最初に書いたサンプル
です。
繰り返しになりますが、ユーザの入力が設定されるのは環境変数に対してです。
例えば、こんなサンプルコードを実行すると?φ(--)
こんな結果になりますよφ(--)

環境変数「OS」が上書きされちゃいましたね。
実害が出ることは少ないでしょうが、一応意識しておいてください。
そんな感じ\(--)/
set /P IN_STR="なんか入力してください:"
とかすればOKです。
変数「IN_STR」に入力された文字列が入ってきます。
サンプルコードはこんな感じですねφ(--)
@echo off
set /P IN_STR="なんか入力してください:"
echo 入力文字列:%IN_STR%
pause
set /P IN_STR="なんか入力してください:"
echo 入力文字列:%IN_STR%
pause
注意点として「IN_STR」の部分は、既存の環境変数と被らないようにしてください。
例えば
set /P PATH="なんか入力してください:"
のようにしてはいけません。
……結論から書けばも何も、これだけでした(^^ゞ
一応解説しておくと、setコマンドは環境変数を設定するコマンドです。
「/P」オプションは、環境変数に設定する値を画面入力から受け付けるオプションです。
試しにコマンドプロンプトを起動して
set /P hoge=
と入力してみてください。
エンターキーを押すと、改行されて入力待ちになります。

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

さて、この状態で以下のコマンドを実行してみましょう。
echo %hoge%
そうすると
str1
が表示されるはずです。

まぁ、何が言いたいかというとですね。
setコマンドは、環境変数を設定するコマンドなのですよ。
最初の方で
変数「IN_STR」に入力された文字列が入ってきます。
と書きましたが、正確には
環境変数「IN_STR」に入力された文字列が入ってきます。
なのです。
そのため「既存の環境変数と被らないようにしてください」と注意しました。
既存の環境変数を上書きしちゃって、思わぬ動作をする可能性がありますからね。
ちなみに
set /P hoge=
の「=」の後ろに続けて文字を書くと、その部分が改行時に表示されます。
例えば
set /P hoge=hogeへの設定値:
と書くと、こんな状態になりますφ(--)

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

さらにこの状態で
echo %hoge%
を入力すると、こんな風になりますφ(--)

ユーザからの入力が(環境)変数に設定されて、
設定された文字列が表示されましたね。
この一連の流れをバッチファイルでやったのが、最初に書いたサンプル
@echo off
set /P IN_STR="なんか入力してください:"
echo 入力文字列:%IN_STR%
pause
set /P IN_STR="なんか入力してください:"
echo 入力文字列:%IN_STR%
pause
です。
繰り返しになりますが、ユーザの入力が設定されるのは環境変数に対してです。
例えば、こんなサンプルコードを実行すると?φ(--)
@echo off
echo OS=%OS%
set /P OS="なんか入力してください:"
echo OS=%OS%
pause
echo OS=%OS%
set /P OS="なんか入力してください:"
echo OS=%OS%
pause
こんな結果になりますよφ(--)

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