【问题标题】:Code to end one batch file with another-can anyone assist?用另一个批处理文件结束一个批处理文件的代码 - 有人可以帮忙吗?
【发布时间】:2013-05-13 00:08:52
【问题描述】:

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

例子:

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

【问题讨论】:

  • taskkill 将关闭 prep.bat 并且ping -n 10 localhost > nul 会给你十秒的延迟。 Timeout 在更高版本的 Windows 上可用。
  • @foxidrive 感谢您的帮助,但我不明白如何使用 taskkill。你能再解释一下吗?

标签: file batch-file prepare


【解决方案1】:

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"

【讨论】:

  • 非常感谢。有效。我喜欢堆栈溢出。在正常情况下,我只需登录并提出问题,大约 10 分钟后我就有 3 或 4 个有用的答案!
【解决方案2】:

如果不知道 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 需要更改以适合您的目的。

【讨论】:

  • 谢谢!计时器像您说的那样倒计时,但是 prep.bat 没有关闭。我一直在尝试使用 taskkill,但我认为您不能将它与 .bat 文件一起使用。有什么方法可以让主批处理杀死 prep.bat 文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多