如何通过单击批处理文件中的回车键来停止循环

时间:2016-12-12 15:32:08

标签: batch-file

我有一个批处理文件,在某个时刻运行一个随机数循环:

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

我希望有人能够点击回车键并停止循环,例如

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

我只是不希望循环停止并要求某人点击进入。

1 个答案:

答案 0 :(得分:1)

您可以做的是在另一个进程中启动另一个批处理,该进程将在用户按下某个键时创建一个临时文件。在循环中,您可以轮询文件的存在:

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可以是这样的:

@echo off

pause > nul
type nul > "%~1"

exit /b 0

按任意键将stoploop.bat创建一个空文件到作为参数给出的位置。 在主批处理脚本中,您每次都必须检查作为stoploop.bat的参数给出的文件是否已存在。 您可以将pollfile设置为您喜欢的任何文件名/路径。请注意,不要使用您不想删除的文件的名称或路径。

通常让两个批处理脚本与start /b共享同一个窗口应该可以工作(这对我有用)。如果它没有(或者你绝对希望用户使用另一个窗口来停止循环),你可以在stoploop.bat的另一个窗口中启动start cmd /c stoploop.bat %pollfile%,而不是start /b

如果您希望它仅适用于enter密钥而不适用于任何密钥,则可以将pause > nul替换为set /p =