在批处理文件中运行带延迟的两个命令

时间:2016-02-12 07:59:44

标签: batch-file

这是我的批处理文件

start /wait "C:\mcg_ia_tools-iqtool2\mydevenv.cmd"
start "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

我希望创建一个运行第一个文件的简单批处理文件,等待它完成执行并启动Visual Studio。

我也尝试过使用延迟命令,无法让它正常工作。

更新: 我试过了

call "C:\mcg_ia_tools-iqtool2\mydevenv.cmd"
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

这是我的outpu,Visual studio没有加载

C:\Users\gdarmon\Desktop>call "C:\mcg_ia_tools-iqtool2\mydevenv.cmd"
Setting up the development environment...

C:\Users\gdarmon\Desktop>C:\WINDOWS\system32\cmd.exe /k ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat""

C:\Users\gdarmon\Desktop>

3 个答案:

答案 0 :(得分:2)

在批处理文件中添加延迟的最简单方法是使用ping命令。

Ping -l 1 -n 1 -w 5000 1.1.1.1 -4 1>nul 2>&1

您使用的参数定义如下:

-l = number of bytes in ping packet
-n = number of ping requests to send
-4 = for use of IPv4 (in case both are available)
-w = timeout in milliseconds

您可以调整-w值1000 = 1秒和-n参数来创建几乎任何安装的延迟。

命令末尾的重定向会隐藏输出,从而污染批量输出。

答案 1 :(得分:1)

您不会显示您使用的delay命令,并且它无论如何都不是标准命令。

您可以使用timeout类型

timeout /?

从提示中了解详情。

你不能说为什么你想要隐形延迟。

也许

call "C:\mcg_ia_tools-iqtool2\mydevenv.cmd"
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

更适合您的目的。

答案 2 :(得分:1)

我为一个程序编写了一个类似的脚本,我需要在运行之前安装一个虚拟驱动器,所以我添加了一个if exists命令来查找驱动器号。

您可以执行类似的操作,最简单的方法是让mydevenv.cmd将txt文件添加到临时文件夹中。

echo finished > %temp%\mydevenvdone.txt

这样的简单命令

然后让主批使用这些行

:waiting
if exist %temp%\mydevenvdone.txt goto envdone
goto waiting
:envdone
del c:\temp\mydevenvdone.txt
start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

所以你的批次看起来像这样:

@echo off
if exist %temp%\mydevenvdone.txt del %temp%\mydevenvdone.txt
start /wait "" "C:\mcg_ia_tools-iqtool2\mydevenv.cmd"
:waiting
if exist %temp%\mydevenvdone.txt goto envdone
goto waiting
:envdone
del c:\temp\mydevenvdone.txt
start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

我在开始时添加了额外的del line,因为你必须停止批处理,它永远不会清理。

希望这很清楚。