内容:执行vs自己的命令行,然后在vs的命令行里面执行命令。
重点:
1.快捷文件可以通过属性去查看它里面执行了什么内容。像VS 2019这个快捷文件,它实际是执行批处理,但是如果我们右键查找位置会发现它位置是system32/cmd.exe。实际上它是执行批处理文件,这个快捷键实际上是设置了cmd的环境。所以我们只要执行vcvars64.bat文件命令就行。
2.这边采用了python的subprocess这个模块,里面可以获取输出结果,而且可以通过列表的形式装载命令,实现输入多条命令。
3.其中遇到转义字符,只需要加\,就可以去除歧义,比如python遇到\v,它会把\v看出空出四格,这时候我们变成\\v就可以去除转义。
4.os.startfile执行的是打开文件,类似于点击文件的功能。
5.cd \ :的作用是直接返回到根目录
其中不足的地方:
由于我们需要知道cmd里面执行的结果,比如编译错误什么的需要知道。但现在没想到什么方法处理让cmd命令行显示出来的方法,只能将获取出来的信息存储到txt文本,然后弹出文本查看信息。
import os
from subprocess import Popen, PIPE, STDOUT
process = Popen(["cmd"], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
commands = ("D:\SoftInstaller\VSIDE\VC\Auxiliary\Build\\vcvars64.bat\n"
"cd \\\n"
"D:\CodeForCube\cube-win-virtual\cicd\\build-cube-for-desktop-debug.bat\n"
)
# 注意每条命令后的新行符 \n
outs, errs = process.communicate(commands.encode("gbk"))
content = [z.strip() for z in outs.decode("gbk").split("\n") if z]
# 创建一个txt文件,文件名为mytxtfile,并向文件写入msg
def text_create(name, msg):
desktop_path = "D:\PycharmProject\TestFile\\" # 新创建的txt文件的存放路径
full_path = desktop_path + name + '.txt' # 也可以创建一个.doc的word文档
file = open(full_path, 'w')
for str in msg:
file.write(str+'\n') # msg也就是下面的Hello world!
file.close()
text_create('cmd', content)
os.startfile(r'D:\PycharmProject\TestFile\\cmd.txt')