在Python中使用Popen执行带变量的bat脚本

Using Popen in Python to execute bat script with variable

我有一个 python 脚本调用一个名为 testrunner.bat 的 bat 脚本,该脚本又在 SOAPUI 中执行一个 TestSuite。我实际上已经通过以下命令获得了外部调用以正常工作:

Popen("testrunner.bat -s\"CCT000 - Deploy Software Release\" -R\"TestSuite Report\" -E\"Default environment\" -Ppath.packages.sq=Y:\NIGHTLY C:\CI\HEDeployment\CI-XXX-DeploySwRelease")

但是,我需要能够让软件 "level" 是动态的,并且需要将变量级别传递到命令中以代替 "NIGHTLY",这样我就可以指定它是否是夜间软件, 或 stable 等。我已经看到我应该将所有参数分开,但我很难过。

subprocess.Popen() 可以接受参数列表和字符串。所以,这应该适合你:

release_type = "NIGHTLY"
Popen(['testrunner.bat', 
       '-s"CCT000 - Deploy Software Release"', 
       '-R"TestSuite Report"', 
       '-E"Default environment"', 
       '-Ppath.packages.sq=Y:' + release_type, 
       'C:CIHEDeploymentCI-XXX-DeploySwRelease'])

如文档中所述,shlex.split 对于将原始命令字符串拆分成多个部分非常有用。但是,至少就我而言,我不得不重新添加双引号。

此外,请记住,单引号字符串可以包含双引号,反之亦然,因此您无需在此处转义引号。