我有一个小批量程序,我运行一些批处理文件。我已将其设置为运行文件。只是一个简单的问题: 我有一个准备文件,可以为下一个批处理文件准备好文件。但是,准备文件在循环中运行。我让它在一个循环中运行,所以我可以为每台机器定制它。我希望它基本上循环10秒然后关闭。我想要它所以我的主批处理文件打开准备批处理文件,运行它10秒钟,关闭它,然后运行序列中的下一个批处理文件。有没有办法做到这一点?有关更多信息,请参阅以下示例谢谢!
示例:
Launcher folder/prep.bat
@echo off
start prep.bat
//Wait for 10 seconds, then close prep.bat
start launch.bat
答案 0 :(得分:4)
在prep.bat
中添加此
@Echo Off
title Prep.bat
然后在控制批处理文件中添加此
start "" prep.bat
ping -n 10 localhost >nul
taskkill /f /im cmd.exe /fi "windowtitle eq Prep.bat"
答案 1 :(得分:1)
如果不知道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
需要根据您的目的进行更改。