启动 cmd /k 然后在另一批结束时关闭

Start cmd /k and then close at the end of another batch

我无法使用 cmd /k 终止命令 window 启动。要在上下文中替换,我想启动自动测试用例(使用 SAHI Framework,它与 Selenium 相似,谁知道呢)。所以,我必须启动第一个包含测试套件的 .bat 文件。为了测试需要启动的代理,我需要在同一个地方启动所有东西,因为我们把所有东西都打包在 Jenkins 服务器中。

因此,为了回顾,我必须使用以下步骤创建一个脚本:

  1. 设置全局变量
  2. 启动代理服务器(在其他终端)
  3. 启动测试用例套件

代码:

rem Start proxy server for handle tests
start cmd /k sahi.bat

rem Starting test suites
testrunner.bat tests.suite http://website.fr/ firefox

因此,这些步骤已完成并且工作正常。但是我必须在步骤 3 之后关闭在步骤 2 中打开的服务器代理。

如何在测试用例后杀死 sahi.bat?

有多种方法可以实现您的目标。我的解决方案:

@ECHO OFF
START "Proxy" sahi.bat
START /WAIT testrunner.bat tests.suite http://website.fr/ firefox && taskkill /FI "WINDOWTITLE eq <username>: Proxy"

START "Proxy" sahi.bat 将使用您的代理启动一个新控制台。 window 标题将是 用户名: Proxy。如果您不确定 window 标题,请尝试使用 START "test" cmd 打开 window。

现在 START /WAIT "testrunner.bat tests.suite http://website.fr/ firefox" && taskkill /FI "WINDOWTITLE eq <username>: Proxy" 将做两件事:它将在新控制台中执行您的测试并终止代理服务器。 &&表示两条命令都会一个接一个执行。但这还不够,因为您的脚本会启动测试并在之后立即终止代理。为避免这种情况,我们只需在命令中添加 /WAIT 即可使脚本在测试 bat 终止后立即执行 kill 命令。

TL;DR

  • 启动代理并调用 window "username: Proxy"
  • 开始测试并在测试完成后终止代理使用给定的标题 "username: Proxy"
  • 识别正确的 window