コンソールからの入力をバッチファイルで読み取る方法は?


82

コンソールからの入力をバッチファイルで読み取るにはどうすればよいですか?私が達成しようとしているのは、Cのscanfの機能です。バッチファイルで同じことを行うにはどうすればよいですか?



@ Raymond:いいえ、質問は複数の文字を文字列としてキーボードから変数に読み込むことです。
nohsib 2011年

このコマンドはset /p、1文字であろうと複数文字であろうと、ユーザーが入力したものをすべて読み取ります。
レイモンドチェン

レイモンド:@ Uが親切にその上でコードスニペットを共有することができます。..
Nohsib

回答:


141

リンクされた提案された複製のコードスニペットは、ユーザー入力を読み取ります。

ECHO A current build of Test Harness exists.
set /p delBuild=Delete preexisting build [y/n]?: 

ユーザーは必要な数の文字を入力でき、それがdelBuild変数に入力されます。


36
注:ユーザー入力は、%delBuild%
Jacob

1
有効にするとecho !delBuild!、実行時setlocal EnableDelayedExpansionにより確実に出力されることに注意する必要があります
xacinay 2014年

29

すぐに終了するのではなく、cmdインスタンスを開いたままにしておきたい場合は、次の手順を実行するだけで十分です。

set /p asd="Hit enter to continue"

スクリプトの最後に、ウィンドウを開いたままにします。

これはasd環境変数として設定され、他のものに置き換えることができることに注意してください。


15
この目的のために、誰かがpauseコマンドを発明しました。またset /p、ではなく、set \pです。
ステファン

6
「誰もが言っているように」は、答えがすでに与えられていることを意味するので、それ以上の情報のない別のものは不要です
jeb

1
@jebあなたは正しいです。私の問題は、変数とエコーが含まれていることでしたが、それらは必要ありませんでした。バッチの経験がないので、回答を解析するのに1、2分かかりました。私の答えは私のニーズに合った最低限の答えを満たしていると思います。
TankorSmash 2015年

@Stephanは、両方の点で、おいに感謝します。スクリプトが完了した後、cmdインスタンスを終了する方法を探していましたが、X時間だけ一時停止するだけでは不十分でした。
TankorSmash

@ArslanAhmad私がテストしたばかりですが、それでも動作します cmdません。正しいものを使用していることを確認してください。
TankorSmash

18

既存の回答に加えて、次のようにデフォルトのオプションを設定することができます。

echo off
ECHO A current build of Test Harness exists.
set delBuild=n
set /p delBuild=Delete preexisting build [y/n] (default - %delBuild%)?:

これにより、ユーザーはデフォルトを入力する場合に「Enter」を押すだけで済みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.