0

我正在尝试将批处理脚本转换为 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 中那样发生,基本上脚本没有提供任何输出/工作。

4

1 回答 1

1

由于您的使用,参数之间的空格可能不存在。尝试这个:

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
)
于 2021-12-11T16:00:21.340 回答