从批处理脚本编写 Python 脚本不适用于一个命令

Writing Python Script from Batch Script is not working for one command

我正在尝试将批处理脚本转换为 python 脚本。 这是批处理脚本,它在指定构建它的项目上调用 Klockwork exe。

%KwPath%\Kwinject -o kwinjectmp.out msbuild %BaseProjPath%/CodingGuide.vcxproj /t:Rebuild /p:Configuration="Release" /p:Platform="x64" /p:CLToolExe=cl.exe /p:CLToolPath=%VSBinPath% 

我已经为它编写了等效的 python 脚本。

args = KwPath + '\Kwinject.exe sync -o ' + 'kwinjectmp.out' + 'msbuild ' + BaseProject + '\' + ProjectFolder + '\' + ProjectName + '/t:Rebuild /p:Configuration="Release" /p:Platform="x64" /p:CLToolExe=cl.exe /p:CLToolPath=' + VSBinPath
print(args)
subprocess.call(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

其中 我已正确声明 BaseProject、VSBinPath、KwPath。但是执行并没有像在 BatchScript 中那样发生,基本上脚本没有给出任何 output/working.

由于您的用法,参数之间可能没有空格。试试这个:

import os
path1 = os.path.join(KwPath, 'Kwinject.exe')
path2 = os.path.join(BaseProject, ProjectFolder, ProjectName)
subprocess.call([
        path1,
        'sync',
        '-o', 'kwinjectmp.out',
        'msbuild',
        path2,
        '/t:Rebuild',
        '/p:Configuration="Release"',
        '/p:Platform="x64"',
        '/p:CLToolExe=cl.exe',
        '/p:CLToolPath=' + VSBinPath
    ], 
    shell=True, 
    stdout=subprocess.PIPE, 
    stderr=subprocess.STDOUT
)