使用另一个批处理文件结束一个批处理文件的代

时间:2013-05-13 00:08:53

标签: file batch-file prepare

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

示例:

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

2 个答案:

答案 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需要根据您的目的进行更改。