在不知道什么是做什么的情况下prep.bat
,或者不知道它为什么需要循环的情况下,建议可能会大错特错。
试试这个结构:
主要球棒:
@ECHO OFF
SETLOCAL
DEL stopprep.txt 2>nul
START wprep.bat
timeout /t 10 >nul
ECHO.>stopprep.txt
:waitprep
IF EXIST stopprep.txt timeout /t 1 >nul& GOTO waitprep
ECHO prep now stopped
Wprep.bat:
@echo off
setlocal enabledelayedexpansion
:loop
set /a delay=2+(%random% %% 7)
timeout /t %delay%
if not exist stopprep.txt goto loop
del stopprep.txt
EXIT
我调用了批处理WPREP.bat
,因为我的测试目录中已经有一个prep.bat
。
主批处理使用timeout
并抑制其输出使用>nul
10 秒后,它创建一个标志文件stopprep.txt
,然后重复等待 1 秒,直到文件消失。
子批次应弹出并显示从 2..9 秒开始的倒计时,然后重复直到STOPPREP.TXT
文件出现 - 至少在启动后 10 秒。我故意选择不抑制timeout
的输出以在窗口中显示一些活动。
如果您的系统尚未TIMEOUT
安装,那么ping -n timeoutrequired+1 127.0.0.1 >nul
它很可能可以正常工作,因为choice
它最近在标准发行版中重新出现。
如果子批次没有关闭,请检查它是否以EXIT
语句结尾。如果仍然没有关闭,请尝试CLS&EXIT
或者,使用 TASKKILL 终止:
@ECHO OFF
SETLOCAL
START wprep.bat
timeout /t 10 >nul
FOR /f "tokens=2" %%i IN ('tasklist/v^|fIND /i " - wprep.bat " ' ) DO >NUL TASKKILL /pid %%i
ECHO prep now stopped
哪里WPREP.bat
需要更改以适合您的目的。