用于生成多个.msbuild文件的python脚本

2024-10-03 02:43:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生,所以我为新手的错误道歉:)

我需要编写一个python脚本来设置visualstudio的环境,然后创建一个临时工作区,从tfs签出最新版本,最后在一个目录下运行多个.msbuild文件,并将输出保存到日志文件中。在

我想出了这个脚本,但它不起作用:

import subprocess
command = "cmd.exe /C dir C:\\"

all_logs = []

def run_cmd(command):
    """run a command and print output"""
    print 'Running: "%s"' % command
    print 'Working dir: %s' % os.getcwd()
    print 'Env params: %s' % os.environ
    p = subprocess.Popen(command, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    out, err = p.communicate()
    print 'output: %s' % out
    print 'error: %s' % err
    all_logs.append(out)

def set_env_params():
    os.environ['PATH'] = os.environ['PATH'] + r';C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC'

def run_tasks():
    #Get Variables
    #set Env Parameters
    set_env_params()
    #source code checkout
    #script
    run_cmd('tf get C:\Users\username\Documents\TFS /recursive')
    run_cmd('msbuild.exe   C:/Users/username\Documents\TFS\BuildScripts/msbuild/libraries.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/pex.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/dhsati.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/dhbati.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/view.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/datafeed.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/apps.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/misc.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/sdp.msbuild')
    run_cmd('msbuild.exe   C:\Users\username\Documents\TFS\BuildScripts/msbuild/unittests.msbuild')


def main():
    print '### STARTING TASKS ###'
    run_tasks()
    print '### FINISHED TASKS ###'


if __name__ == '__main__':
    #to run if this python script it executed directly
    main() 

我面临的主要问题是: 1) 设置环境变量gor VS2010是不够的。为了让cmd理解'tf'命令,我还需要运行vcvarsall.bat公司文件。在

2)如果我添加“开始”C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat公司“'命令,另一个cmd正在打开,环境正确,但脚本中的后续命令无法插入此新cmd中。在

我还试图编写一个bat文件,我将从我的脚本运行,但我在cmd进程中遇到了同样的问题。在

问题:

1)是否有一种方法可以在单个进程下运行所有命令?在

2)我最好的方法是什么?在


Tags: 文件run脚本cmddefusernameexeusers