2016-12-12 7 views
0

バッチファイルで入力したキーをクリックしてループを停止しますEnterキーをクリックしてループを停止するにはは、どのように私は、ある時点で、乱数のループを実行し、バッチファイルを持っている

:rand1matrix 
echo %random%%random%%random%%random% 
pause 
goto rand1matrix 

私はちょうどループを止めて誰かを入力するように頼んではいけません。

+0

http://stackoverflow.com/questions/36775423/batch-file-getting-user-input-during-execution-of-other-commands-then-このヘルプをチェックしますか? 'pause'の代わりにユーザ入力 – Matthias

+0

'> nul timeout/T 1'を常にチェックするためのループを作成することができますか? – JosefZ

+0

「ループを止める」とはどういう意味ですか?それを終了したいのですか、それとも一定の時間、または別のキーを押すまで停止しますか? – aschipfl

答えて

1

あなたができることは、ユーザーがキーを押したときに一時ファイルを作成する別のプロセスで別のバッチを開始することです。

@echo off 

pause > nul 
type nul > "%~1" 

exit /b 0 

その後、stoploop.batが与えられた場所に空のファイルを作成できるようになる任意のキーを押す:

set pollfile=some_random_name.poll.tmp 
IF EXIST "%pollfile%" del "%pollfile%" 

start cmd /c stoploop.bat %pollfile% 

:loop 
IF EXIST "%pollfile%" goto :exitloop 
:: DO WHAT YOU WANT 
echo %random%%random%%random%%random% 
goto :loop 

:exitloop 
echo We got out of the loop :) 
IF EXIST "%pollfile%" del "%pollfile%" 

stoploop.batはこのようなものになることができます:あなたのループでは、そのファイルの存在をポーリングすることができます引数として。 メインバッチスクリプトでは、stoploop.batへの引数として与えられたファイルがすでに存在するかどうかを毎回確認するだけです。 pollfileは好きなファイル名/パスに設定できます。注意を払い、削除したくないファイルの名前やパスを使用しないでください。

通常、2つのバッチスクリプトを同じウィンドウ(start /b)で共有させると効果があります。そうでない場合(または、ユーザーが別のウィンドウを使用してループを停止させたい場合)、別のウィンドウでstoploop.batを開始することができます。start cmd /c stoploop.bat %pollfile%start /bです。

キーでのみ動作し、いずれのキーでも使用しない場合は、pause > nulset /p =に置き換えることができます。

関連する問題