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.FileNameand ps.Arguments,如果需要,命令的输出将被重定向到一个StringBuilder实例进行解析。在窗口中执行命令的 shell 完全隐藏,不显示。

希望这会有所帮助,最好的问候,汤姆。

于 2010-02-13T16:06:22.083 回答