172

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

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

4

6 に答える 6

286

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

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

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

于 2013-04-30T14:34:43.467 に答える
16

pauseコマンドはあなたが探しているものです。Enter が押されたときのケースだけを見ている場合は、runasコマンドを悪用できます。

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

Enterキーを押すまで画面がフリーズしset/p=ます。

于 2013-04-30T14:33:23.557 に答える
4

使用しているOSに応じて、柔軟性があればCHOICE、ほとんどすべてのキーEXCEPT入力を待機するために使用できます

Microsoft が単に MS-DOS エミュレーターである「コマンド プロンプト」を呼び出すことを主張していることを実際に参照している場合は、おそらくTIMEOUT目的に合っている可能性があり(timeout /t -1単に.ENTERCHOICE

そして警告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 で終わる他の何かがキー入力されたかを検出します。

于 2013-04-30T19:33:16.500 に答える
0

npocmaka の回答で気づきrunas /user:# "" >nul 2>&1ましたが、文書化されていないパラメーター エイリアスのおかげで、大幅に短縮できることがわかりました。2>&1も不要のようです。これはできる限り短いものです (プロンプト テキストは数えません)。

echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL

構文の強調表示では読みにくい (そして、stackoverflow.com はまだバッチ ファイルの構文の強調表示を修正していない) ため、構文の強調表示を含むスクリーンショットを次に示します。

続行するには、 を押してください..

于 2021-12-29T18:38:05.030 に答える