1. ホーム
  2. スクリプト・コラム
  3. DOS/BAT

set /p=コマンドを詳しく説明します。

2022-02-10 10:37:45

setコマンドの詳細

一括で情報を表示し直すコマンドには echo と set /p=<nul がありますが、どちらもプログラムに対してメッセージを実行するという共通点があります
違いは、echoが改行出力であるのに対し、set /p=<nulは非改行追従出力であるため、以下のようになります。
比較のため、次の2つのコードを示す。

コード

@echo off
echo bathome
echo batman
pause>nul

コード

@echo off
set /p=bathome<nul
set /p=batman<nul
pause>nul

この2つのコードを実行すると、最初のコードでは画面に2行の連続した出力が得られ、bathomeが表示されます。
とバットマンが出力されるのに対し、2番目のものはbathomeとバットマンを1行で出力し、さらによく見ると、ライトの
マーカーの位置も違います。さて、今回はここまでです。

I. セットの主な目的は、値を割り当てることである
1. set /p a=promptstring
最初にプロンプト文字列を表示し、次にユーザーの入力を受け付け、キャリッジリターンで終了し、変数aに値を代入します。

2. set /p a=promptstring<1.txt
まず promptstring を表示し、1.txt ファイルの内容を "<"のパイプ番号の右側に、最初の文字からキャリッジリターンに当たるまで変数 a(通常は最初の行として表示される)に代入します。

3. set /p a=promptstring<nul
まずpromptstringを表示し、次に"<"のパイプ番号の右側にあるnulの内容を変数aに代入し、ユーザーがエンターキーを押して文を終了させないようにします。nul は空のデバイスなので、代入する内容はなく、変数 a は未定義のままです。

次に、プロンプト文字列はユーザー入力を受け付ける前に表示できるため、setは表示コマンドとしても使用できます(表示コマンドとしてのみ使用する場合、変数aは省略可能です)。
1. /p =promptstringとする。
promptstringを表示し、ユーザー入力を受け付け、キャリッジリターンで終了する。ユーザーが直接Enterキーを押した場合は、promptstringのみが表示される(空の変数に代入され、代入の意味は失われ、表示のためだけで、ユーザーは文を終了するためにEnterキーを押す必要があり、あまり実用的ではない)

2. set /p =promptstring<1.txtを設定する。
まずpromptstringを表示し、1.txtファイルの内容を"<"のパイプ番号の右側に、最初の文字からキャリッジリターンに当たるまで空の変数に代入(実用的ではありません)。

3. set /p =promptstring<nul
まずpromptstringを表示し、次に"<"パイプ番号右nulの内容を空の変数に割り当て、ユーザーが文を終了するEnterキーを押すことなく、実際には、この文は頻繁に表示文として使用されています。カーソルの後の表示プロンプト文字列は、行を変更しないので、実際にはこの文はたくさん使用されます。2階で述べたように、カーソルバックスペースなどもあります。