web-dev-qa-db-ja.com

EnterキーでMS-DOSバッチファイルの一時停止

MS-DOSバッチファイルでスクリプトを一時停止してユーザーがEnterキーを押すのを待つことは可能ですか?

Forループの中でこれをやりたいのですが。繰り返しのたびに、スクリプトを一時停止し、ユーザーがEnterキーを押すのを待ちます。

125
dr_rk

エンターキーではありませんが、それを実行するpauseコマンドがあります。

本当にEnterキーだけを待ちたい場合は、setコマンドを使用して、ダミー変数を使用してユーザー入力を求めることができます。

set /p DUMMY=Hit ENTER to continue...

204
abjuk

pauseコマンドはあなたが探しているものです。もしエンターがヒットしたときのケースだけを見ているなら、runasコマンドを悪用することができます。

runas /user:# "" >nul 2>&1

set/p=以上に好きなのは、enter以外の他のボタンを押すと表示されないということです。

11
npocmaka

使用しているOSに応じて、柔軟であれば、CHOICEを使用して、ほぼすべてのキーを待機できますEXCEPT

単にMS-DOSエミュレーターである「コマンドプロンプト」を呼び出すことをMicrosoftが主張していることを本当に参照している場合は、おそらくTIMEOUTが目的に合っているかもしれません(timeout /t -1ENTER)およびもちろんCHOICEは、最近のWINエディションで再び利用可能です。

SET /Pに対する警告-set /p DUMMY=Hit ENTER to continue...は機能しますが、

set "dummy="
set /p DUMMY=Hit ENTER to continue...
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed)

eNTERで終わるか、ENTERで終わる何かがキー入力されたかどうかを検出します。

2
Magoo