1

我有一个小批处理程序来运行一些批处理文件。我已将其设置为运行文件。只是一个简单的问题:我有一个准备文件来为下一个批处理文件准备好文件。但是,准备文件循环运行。我让它循环运行,所以我可以为每台机器定制它。我希望它基本上循环 10 秒然后关闭。我想要它,所以我的主批处理文件打开准备批处理文件,运行 10 秒,关闭它,然后运行序列中的下一个批处理文件。有没有办法做到这一点?有关更多信息,请参见下面的示例。谢谢!

例子:

Launcher folder/prep.bat
@echo off
start prep.bat
//Wait for 10 seconds, then close prep.bat
start launch.bat
4

2 回答 2

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"
于 2013-05-13T06:27:24.463 回答
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并抑制其输出使用>nul10 秒后,它创建一个标志文件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需要更改以适合您的目的。

于 2013-05-13T04:16:29.893 回答