执行批处理文件。如何在打开的命令提示符窗口中调用.bat文件,visual studio命令提示符和更改目录

时间:2013-08-15 11:59:47

标签: visual-studio-2010 batch-file

@echo off
echo copy masterDB file from one directory to another one
copy "C:\dir\dbfile"  "C:\dir1\dbfile" 
cd c:\lvsdir
call lvsrun.bat
timeout /t 180
start %comspec% /k ""C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"" x86 
cd C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE
MSTest /testcontainer: C:\testdir\test.dll

我想通过批处理文件将db文件从一个目录复制到另一个目录(执行正确),然后启动lvsrun.bat文件,该文件应启动lvs服务器, 然后在新窗口中打开visual studio命令提示符,在打开的命令提示符下更改目录以测试目录并运行测试文件。当我调用lvsrun.bat时会出现问题,并且它会卡在那里。无法打开新的vs命令提示符。在打开vs命令提示符下更改目录并运行测试文件时出现问题。上面的代码并没有真正起作用

1 个答案:

答案 0 :(得分:4)

你在这里问了两个问题。你应该将它们分开并将它们作为两个单独的SO问题。

Q1。为什么我的批处理文件永远不会超过call lvsrun.bat

A1。因为call在调用的批处理文件退出之前不会返回。如果要立即启动lvsrun.bat并继续执行,请使用start

copy "C:\dir\dbfile" "C:\dir1\dbfile"
cd c:\lvsdir
start "" "%comspec%" /k lvsrun.bat

Q2。为什么我启动的新命令窗口没有运行我的测试文件?

A2。您的批处理文件将仅控制命令窗口。如果启动另一个命令窗口,那个窗口是独立的,则无法“发送”命令。但您可以在当前窗口中运行测试,而不是启动另一个:

:: Use "call" here to run vcvarsall.bat to set up the environment in this process
call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
cd C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE
MSTest /testcontainer: C:\testdir\test.dll

或者您可以制作第二个批处理文件,仅用于运行测试。例如,我们称之为runtest.bat,并给它完全相同的行:

call "C:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
cd C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE
MSTest /testcontainer: C:\testdir\test.dll

然后可以同步从原始批处理文件中调用:

call runtest.bat

或异步:

start "" "%comspec%" /c runtest.bat