2012-05-02 19 views
13

więc mam polecenie chcę uruchomić który wygląda następująco:Dla poleceń używając devenv.exe biegnie zbyt szybko

for /r %n in ("*.vdproj") do "C:/Program Files/Microsoft 
Visual Studio 10.0/Common7/IDE/devenv.exe" %n /build "BuildServer" 

Wydaje się, że praca przebiega devenv na każdym pliku .vdproj; jednak wydaje się, że działają one równolegle i natychmiast wracają. To jest problem; Muszę poczekać, aż wszystkie zostaną zakończone przed następnym krokiem w pliku .bat. Jak mogę albo

1- Pobierz za do „czekać” na każdym devenv zakończyć przed uruchomieniem następnego

lub

2- Poczekaj, aż devenv.exe wszystko jest zrobione przed przejściem na później?

+0

(nie chcesz% n%, czy jest to nawet %% n %%?) Jeszcze 2 rzeczy. Czy jesteś pewien, że devenv.exe faktycznie coś robi LUB czy natychmiast się zawiesza, dając wrażenie, że działa równolegle na twojej liście? Czy próbowałeś wykonać tylko jedną iterację pętli for (bez forloopa) z linii poleceń, wypełniając znane, istniejące wartości dir/file dla twojego% n? 2. użyj karty procesów w menedżerze zadań, posortowanej według nazwy procesu, aby zobaczyć, czy w systemie działa bałagan devenv.exe. To udowodniłoby, że moje pytanie nr 1 nie ma znaczenia. Powodzenia. – shellter

+0

Jeśli spojrzę na menedżera zadań, widzę cały zestaw programów Devenv.exe, które działają i kończą się w końcu. – GWLlosa

Odpowiedz

1

Wywołanie devenv.exe przy użyciu start, np.

start /wait "" "C:/Program Files/Microsoft Visual Studio 10.0/Common7/IDE/devenv.exe" %n /build "BuildServer" 

Zastosowanie start /? do użytkowania.

+0

Próbowałem tego, ale nadal wrócił natychmiast ... nie jestem pewien, czy to dlatego, że devenv wykonuje swoją własną grę wątku i zwrotu, czy coś podobnego, ale start/wait/B nie zadziałał. – GWLlosa

+0

Interesujące. Innym sposobem obejścia tego problemu jest ominięcie devenv i bezpośrednie wywołanie programu msbuild. – Sorpigal

+0

Niestety, jest to obejście problemu msbuild ... MSBuild.exe nie obsługuje bezpośrednio projektów .vdproj (instalator/moduł scalający). – GWLlosa

33

Sztuką jest użycie devenv.com zamiast devenv.exe. devenv.com zwróci wyjście do konsoli i osiągnie dokładnie pożądany wynik.

+0

Co, jeśli jest to maszyna 64-bitowa? – dbenham

+0

Wtedy prawdopodobnie są to pliki programów (x86). – GWLlosa

+0

Miałem na myśli fakt, że 64-bitowy system Windows nie uruchamia plików COM. – dbenham

Powiązane problemy