2013-04-30 14 views
92

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

私はこれをforループ内で実行したいと考えています。各繰り返しの後、スクリプトを一時停止し、ユーザーが「Enter」を押すのを待ちます。

答えて

154

特に入力キーではありませんが、それだけのコマンドはpauseです。

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

+8

あなたは、変数を指定する必要はありません。名前: 'set/p = Enterを押して続ける...'、あるいはプロンプトが必要ない場合は単に 'set/p ='です。 – dbenham

+2

なんらかの理由で、私のアプリはポーズロジックの直後にブラストしています。非常に奇妙な。 – ouflak

+7

この文脈(バッチファイル)で使われている "app"という言葉がちょっと変わっているようです。 –

11

pauseコマンドはあなたが探しているコマンドです。 入力しますが、あなたがrunasコマンドを乱用することができますヒットしたとき、あなたは唯一のケースを探している場合:

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

入力するまで、画面がフリーズされますが、私はより多くset/p=が好きhit.Whatであるあなたは、他のボタンを押すと、入力したよりも、ということですそれらは表示されません。

1

がどのOSあなた」に応じて:あなたは本当に唯一の入力キーを待ちたい場合

は、あなたは、何かのようにダミー変数を使用してユーザの入力を求めるためにsetコマンドを使用することができますあなたが柔軟である場合に使用して再、その後CHOICEはあなたが本当にその後、Microsoftは単純にMS-DOSエミュレータである「コマンドプロンプト」を呼び出すを主張する何を参照している場合は、ほぼすべてのキーEXCEPT

に入るのを待つために使用することができますおそらくTIMEOUT mあなたの目的に合っている(timeout /t -1はどんなキーでも待ちますが、ENTERだけではありません)、もちろん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または何か他のものかどうかを検出しますがキー入力された