1

最初のバッチファイルはコマンドプロンプトを起動します。2番目のコマンドを最初のコマンドのccontextに含める必要があります。Pythonでこれを行うにはどうすればよいですか?

そのまま、バッチを起動し、バッチ(コマンドプロンプトコンテキストを含む)が終了するまでブロックしdevenv、必要なコンテキストなしで実行します。

os.system(r'%comspec% /k ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86')
os.system(r'devenv asdf.sln /rebuild Debug /Out last-build.txt')

私はbashにいるのと同じように考え、perlコンテキストでコマンドを実行する必要があるので、と入力しperl -c 'asdf'ます。perlとasdfを連続して実行しても機能しません。perldevenvコンテキストの内部を取得する必要があります。

4

4 に答える 4

3

これを達成するための適切な方法は、次のコマンドを実行することだと思います:

%comspec% /C "%VCINSTALLDIR%\vcvarsall.bat" x86 && vcbuild "project.sln"

以下に、同じコマンドの Python バージョンを示します。

os.system('%comspec% /C "%VCINSTALLDIR%\\vcvarsall.bat" x86 && vcbuild "project.sln"')

これはどの Visual Studio でも機能するはずなので、質問を編集してより一般的なものにすることをお勧めします。

vcvarsall.bat の場所に関して、小さな問題が見つかりました。VCINSTALLDIR は常に設定されているとは限らないため、レジストリ エントリを使用してインストーラの場所を検出する必要があります。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0]
"InstallDir"="c:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\"

..\..\VC\vcvarsall.batこのパスに追加します。Visual Studio の他のバージョンをテストすることもお勧めします。

于 2009-08-06T08:00:33.233 に答える
2

次のように、元のバッチファイルの最後にdevenvコマンドを追加できます。

'%comspec% /k "...vcvarsall.bat" x86 && devenv asdf.sln /rebuild ...'

(明らかに、簡単にするためにコマンドを短くしました)

于 2008-11-04T23:21:24.560 に答える
2

変数を設定するバッチ ファイルから Python スクリプトを実行します :-)

call ...\vcvarsall.bat
c:\python26\python.exe myscript.py

しかし、Brett のソリューションの方が良さそうです。

于 2008-11-13T23:24:48.193 に答える
2

これらの状況では、すべてを実行するスクリプトを使用します。そうすれば、好きなだけチェーンできます。スクリプトをオンザフライで生成することもあります。

compileit.cmd
  call C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
  devenv $1.sln /rebuild Debug /Out last-build.txt
于 2008-11-04T23:29:38.270 に答える