2013-08-15 3 views
1
@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-сервер, , а затем открыть командную строку визуальной студии в новом окне, сменить каталог в открытой командной строке, чтобы протестировать каталог и запустить тестовый файл. Проблема возникает, когда я вызываю lvsrun.bat, и он держится там. Невозможно открыть командную строку vs. И проблема с изменением каталога в открывшемся vs командной строке и запуск тестового файла. Код выше действительно не работаетВыполнение командного файла. Как вызвать .bat-файл, визуальную студию командной строки и изменить каталог в открывшемся окне командной строки

ответ

4

Вы задали здесь два вопроса. Вы должны разделить их и задать им два отдельных вопроса.

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 
+0

Благодарим вас за ответ. Я уже проверил ответ на первый вопрос. Когда вы меняете каталог, а затем используете start, он меняет каталог, в котором скопирован файл db. И пытается запустить пакетный файл из домашнего каталога в новом окне. Пробовал по-разному, но до сих пор нет результата – Ruud

Смежные вопросы