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

Posted

技术标签:

【中文标题】从批处理脚本编写 Python 脚本不适用于一个命令【英文标题】:Writing Python Script from Batch Script is not working for one command 【发布时间】:2022-01-15 20:33:38 【问题描述】:

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

【问题讨论】:

【参考方案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
)

【讨论】:

以上是关于从批处理脚本编写 Python 脚本不适用于一个命令的主要内容,如果未能解决你的问题,请参考以下文章

Python3 正则表达式不适用于脚本,但适用于 pythex.org

python 不适用于RBpi的脚本

Python 导入适用于解释器,不适用于脚本 Numpy/Matplotlib

import pymongo 适用于 Python 解释器,但不适用于脚本

内容安全策略 nonce 不适用于事件处理程序属性

用于命令行脚本和导入模块的 Python“模板”模块