MS-DOS バッチ ファイルでスクリプトを一時停止し、ユーザーが Enter キーを押すのを待つことはできますか?
これを for ループ内で実行したいと考えています。各反復の後、スクリプトを一時停止して、ユーザーが「Enter」を押すのを待ちます
MS-DOS バッチ ファイルでスクリプトを一時停止し、ユーザーが Enter キーを押すのを待つことはできますか?
これを for ループ内で実行したいと考えています。各反復の後、スクリプトを一時停止して、ユーザーが「Enter」を押すのを待ちます
pause
特にエンターキーではありませんが、まさにそれを行うコマンドがあります。
本当に Enter キーだけを待ちたい場合は、set
コマンドを使用して、次のようなダミー変数を使用してユーザー入力を求めることができます。
set /p DUMMY=Hit ENTER to continue...
pause
コマンドはあなたが探しているものです。Enter が押されたときのケースだけを見ている場合は、runas
コマンドを悪用できます。
runas /user:# "" >nul 2>&1
Enterキーを押すまで画面がフリーズしset/p=
ます。
使用しているOSに応じて、柔軟性があればCHOICE
、ほとんどすべてのキーEXCEPT
入力を待機するために使用できます
Microsoft が単に MS-DOS エミュレーターである「コマンド プロンプト」を呼び出すことを主張していることを実際に参照している場合は、おそらくTIMEOUT
目的に合っている可能性があり(timeout /t -1
単に.ENTER
CHOICE
そして警告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 で終わる他の何かがキー入力されたかを検出します。
npocmaka の回答で気づきrunas /user:# "" >nul 2>&1
ましたが、文書化されていないパラメーター エイリアスのおかげで、大幅に短縮できることがわかりました。2>&1
も不要のようです。これはできる限り短いものです (プロンプト テキストは数えません)。
echo|set/p="Press <ENTER> to continue.."&runas/u: "">NUL
構文の強調表示では読みにくい (そして、stackoverflow.com はまだバッチ ファイルの構文の強調表示を修正していない) ため、構文の強調表示を含むスクリーンショットを次に示します。