我有一个批处理文件,在某个时刻运行一个随机数循环:
:rand1matrix
echo %random%%random%%random%%random%
goto rand1matrix
我希望有人能够点击回车键并停止循环,例如
:rand1matrix
echo %random%%random%%random%%random%
pause
goto rand1matrix
我只是不希望循环停止并要求某人点击进入。
答案 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 =
。