4

走りたい

tf changeset 12345

Visual Studio 2008 コマンド ツールを使用します。次の場所にあります。"c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\"起動されるコマンドは次のとおりです。%comspec% /k ""c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86

「tf changeset 12345」を何らかの方法で追加し、最初にファイルにリダイレクトせずに文字列に保存したいと思います。コマンドラインから単純に呼び出すと、次のように入力するとGUIが表示されることに気付きました。

tf changeset 12345

そして、次のようにすると、テキスト出力が得られます。

tf changeset 12345 > out.txt

私はファイル システム上にファイルを作成したくありませんが、できれば "Pythonic の方法" でファイルを読み込んでください。

os.system()、サブプロセスの簡単な例を見てきましたが、やりたいことを実行する方法を説明しているようには見えません:

  1. 特定のディレクトリからプロセスを実行します (できれば chdir を使用せずに)
  2. 環境変数 + カスタム テキストを含むコマンドの実行。
  3. 一時ファイルを作成せずに出力をリダイレクトします。

私が望むものに近づけるお手伝いができれば幸いです。VS2008 またはその他の Windows プログラムでソリューションをテストすると役立ちます。

ありがとうございました!

4

2 に答える 2

3
process = subprocess.Popen(['tf', 'changeset', '12345'], cwd='c:/somedir', env={'SOMEENVVAR': 'SOMEVALUE', ...}, stdout=subprocess.PIPE)

for line in process.stdout:
  print line

process.terminate()
于 2010-02-18T07:56:36.213 に答える
2

あなたが探している仕事をするためにここで使用したこのコードを見てください。これは C# で書かれており、柔軟なクラスです。コマンドを変更し、 を調べるだけで、必要に応じてコマンドps.FileNameの出力が解析のためps.Argumentsにインスタンスにリダイレクトされます。StringBuilderウィンドウ内のコマンドを実行するシェルは完全に隠され、表示されません。

これがお役に立てば幸いです。よろしくお願いします、トム。

于 2010-02-13T16:06:22.083 に答える