【问题标题】:start command in batch file批处理文件中的启动命令
【发布时间】:2016-08-03 08:06:11
【问题描述】:

我想运行一个批处理文件,它在另一个窗口中构建 Visual Studio 项目,然后返回原始窗口并执行后面的命令。

但以下命令会立即打印 LetterTwo,而无需等待完整的解决方案构建

echo LetterOne
start /WAIT msbuild sim.sln
echo LetterTwo

【问题讨论】:

  • cmd /c替换start /WAIT并告诉我们它是否有效
  • 什么是msbuild,一个批处理文件?
  • @Jean-FrançoisFabre 它在同一窗口中构建解决方案,而不是为解决方案构建打开新窗口
  • 好的,那就试试start /WAIT cmd /c msbuild
  • @Jean-FrançoisFabre,不,它在另一个窗口中构建解决方案,但在完成解决方案构建之前在第一个窗口中执行下一个命令“echo LetterTwo”。指令 2 和 3 同时执行相当顺序。

标签: batch-file cmd


【解决方案1】:

根据问题的 cmets,msbuild 的行为似乎不像人们猜测的那样。所以你唯一的办法就是“手动等待”:

start "MyUglyApplication" msbuild sim.sln
:loop
timeout 1 >nul
tasklist /v | find "MyUglyApplication" && goto :loop
echo finished.

给新窗口一个唯一的名字,测试进程是否正在运行,如果是,继续测试。

【讨论】:

  • 感谢@Stephan。我对你的代码做了一些修改,效果很好。
【解决方案2】:

我可以通过稍微修改@stephan 代码来解决问题

    @echo off
    start msbuild <solution>
    :loop
    timeout 1 >nul
    tasklist /FI "IMAGENAME eq msbuild.exe" 2>NUL | find /I /N "msbuild.exe">NUL
    if "%ERRORLEVEL%"=="0" goto loop
    echo finished.

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 2012-05-02
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2020-09-10
    • 2011-03-28
    相关资源
    最近更新 更多