You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python切换到指定路径并执行CMD批处理命令?

自动化构建流程的Python实现问题

我想要自动化构建流程,常规操作是进入存放make脚本的文件夹,打开CMD执行类似Bootstrap_make.bat /fic = Foo的命令。现在想用Python实现:切换到指定路径、打开CMD并执行命令。

我尝试了以下代码:

def myClick():
    subprocess.run(["cd ..\Projects\ADAS\proj11\embedded_env\make_scripts" ])
    subprocess.run(["bootstrap_make.bat","/fic= my_software_variant"])

但出现如下错误:

Traceback (most recent call last):
File "C:\Users\aelkhate\AppData\Local\Programs\Python\Python310\lib\tkinter_init_.py", line 1921, in call
return self.func(*args)
File "C:\E\ProductOne_Builder1.py", line 5, in myClick
subprocess.run(["cd ..\Projects\ADAS\proj11\embedded_env\make_scripts" ])
File "C:\Users\aelkhate\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 501, in run
with Popen(*popenargs, **kwargs) as process:
File "C:\Users\aelkhate\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 966, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\aelkhate\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] The system cannot find the file specified

请问该如何实现并解决报错?


问题原因与解决方法

错误根源

  1. cd是CMD的内置命令,并非独立可执行文件,直接用subprocess.run调用会触发"找不到文件"错误——subprocess默认只会查找系统中的可执行程序,不识别shell内置命令。
  2. 两次subprocess.run调用是完全独立的进程,第一次切换路径的操作不会影响第二次进程的工作目录。

正确实现方案

方案一:通过cwd参数指定工作目录

直接在执行bat脚本时指定工作目录,无需单独执行cd命令:

import subprocess

def myClick():
    # 用原始字符串避免反斜杠转义问题
    target_dir = r"..\Projects\ADAS\proj11\embedded_env\make_scripts"
    # cwd参数指定命令执行的工作目录,等同于先cd到该目录再执行脚本
    subprocess.run(["bootstrap_make.bat", "/fic=my_software_variant"], cwd=target_dir, shell=True)
  • shell=True:Windows下需开启该参数,让CMD解析bat脚本的语法。
  • cwd:直接让子进程在目标目录启动,替代手动cd操作。

方案二:通过shell执行完整命令串

如果需要完全模拟手动在CMD中输入的流程,可以将cd和执行命令合并为一个shell命令:

import subprocess

def myClick():
    # 用&&连接两个命令,仅当前一个命令执行成功时才运行后一个
    cmd = r'cd ..\Projects\ADAS\proj11\embedded_env\make_scripts && bootstrap_make.bat /fic=my_software_variant'
    subprocess.run(cmd, shell=True)
  • 必须开启shell=True,否则无法解析cd和&&这类shell语法。

额外注意事项

  • 路径含空格时:需用双引号包裹路径,例如r'"..\path with spaces\make_scripts"'。
  • 权限问题:若脚本需要管理员权限,可添加creationflags=subprocess.CREATE_NEW_CONSOLE参数(仅Windows),或手动以管理员身份运行Python脚本。

内容的提问来源于stack exchange,提问作者ftkhateeb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:15:36