2012-05-02 11 views
13

を実行します:は、だから私は、私は次のようになります。これは実行したいコマンド持ってあまりにも早く

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

をそれは各.vdprojファイルにdevenvを実行されることで動作するようです。しかし、それはそれらを並行して実行し、すぐに戻ってくるようです。これは問題だ; .batファイルの次のステップが実行される前に、すべて終了するまで待つ必要があります。どのようにすることができます私はどちらか

の1- DEVENV.EXEはすべて、その後に移動する前に完了するまで次の1

または

2 - 待ちを実行する前に終了する各devenvを上「待つ」にするために取得しますか?

+0

(あなたは%n%を望んでいませんか、それとも%% n %%ですか?)ほかに2つのものがあります。 devenv.exeが実際に何かをしているかどうか、またはすぐに失敗して、あなたのリストが並行して実行されているという印象を与えていますか?つまり、コマンドラインからforループを1回だけ実行して、%nの既知の既存のdir/file値を入力してみましたか? 2.プロセス名でソートされたタスクマネージャーのプロセスタブを使用して、システム上でdevenv.exeの動作が混乱しているかどうかを確認します。それは私の質問#1が関係ないことを証明するでしょう。がんばろう。 – shellter

+0

私はタスクマネージャーを見れば、Devenv.exeの実行中は完全に停止していて、完了するまで実行され、最終的に停止するように見えます。 – GWLlosa

答えて

1

startを使用してdevenv.exeを呼び出します。

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

start /?を使用してください。

+0

私はそれを試みましたが、それはまだすぐに戻りました... devenvが独自のlaunch-on-threadとreturn gameや何かをしますが、start/wait/Bがまったく動作しなかったかどうかは分かりません。 – GWLlosa

+0

興味深い。私の頭の上からもう一つの回避策は、devenvをバイパスし、代わりにmsbuildを直接呼び出すことです。 – Sorpigal

+0

残念ながら、これはmsbuildの回避策です... MSBuild.exeは.vdproj(インストーラ/マージモジュール)プロジェクトを直接処理できません。 – GWLlosa

33

トリックはdevenv.exeの代わりにdevenv.comを使用します。 devenv.comは出力をコンソールに返し、目的の結果を正確に達成します。

+0

64ビットマシンの場合はどうなりますか? – dbenham

+0

それはおそらくProgram Files(x86)です。 – GWLlosa

+0

私は、64ビットWindowsでは.comファイルを実行しないという事実を指摘していました。 – dbenham

関連する問題