不等待 bat 执行完成,直接进行下一步|优化后的 bat 文件

windows 专用

import os  

# 打开bat文件,不等待  
os.startfile(r'D:\code\epdii_jean\func\sap\eo_gscm\data_to_gscm_api.bat')  

# 立即执行下一步操作  
print("继续执行后续代码")

subprocess popen

import subprocess  

# 不等待执行完成  
subprocess.Popen(r'D:\code\epdii_jean\func\sap\eo_gscm\data_to_gscm_api.bat',   
                 shell=True,   
                 stdout=subprocess.PIPE,   
                 stderr=subprocess.PIPE)  

# 立即执行下一步操作  
print("继续执行后续代码")
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0 REM Change the current directory to the directory of this batch file
set "full_path=%~dp0"
set "target=epdii_jean" REM venv 目录的上一级目录

set "project_path="
set "found="

rem 将路径按反斜杠分割并遍历各部分
for %%A in ("%full_path:\=" "%") do (
    set "part=%%~A"
    if not defined found (
        if "!part!"=="%target%" (
            set "found=yes"
            set "project_path=!project_path!\!part!"
        ) else (
            if defined project_path (
                set "project_path=!project_path!\!part!"
            ) else (
                set "project_path=!part!"
            )
        )
    )
)

rem 去除路径开头的多余反斜杠(如果有)
set "project_path=%project_path:\=/%"
set "project_path=%project_path:/=\%"
set "python_path=%project_path%\venv\Scripts\python.exe" REM 用虚拟环境中的 python 执行脚本
echo project_path: %project_path%
%python_path% t3.py

你可能感兴趣的:(笔记,笔记)