python - 使用 Python 打开 .bat 文件 - 不起作用

标签 python batch-file

我有 3 个不同的文件,一个 Python 文件和两个 .bat 文件。他们互相交流(希望如此)。

当我单独执行“Process_Videos.bat”(在 Windows 资源管理器中双击)时,它工作正常,但每当我从 Python 文件调用它时,它根本不起作用,只是说“按任意按钮继续。 ..”

我确实需要这个结构,从 Python 文件中调用“Process_Videos.bat”,因为我正在提取一些网络信息。 “pythonExecute.bat”只是作为整个过程的触发器。

我也尝试过“子进程”方法,但也不起作用。

文件和相应的代码:

pythonExecute.bat

python "D:\\tests\\pythonCall.py"

pythonCall.py

import os
os.system('D:\\tests\\3.asc\\Process_Videos_asc.bat')

Process_Videos.bat

@echo off

setlocal EnableDelayedExpansion
set "FolderBaseName=TestName"
set "DropBoxFolder=D:\tests\3.asc\myDropBoxFolder"
set "BaseOutputFolder=D:\tests\3.asc\TEMP"

for %%I in (*.png) do (

    set "slaveName=%%~nI"
    set "slaveName=!slaveName:~6!
    set "OutputFolder=%BaseOutputFolder%_!slaveName!"
    echo !slaveName!   
    md "!OutputFolder!" 2>nul

    for %%J in (*.mp4*) do (

        ffmpeg -i "%%~fJ" -i "%%~fI" -filter_complex overlay "!OutputFolder!\%%~nJ.mp4"

    )

    "C:\Program Files\WinRAR\rar.exe" a -cfg- -ep1 -inul -m5 "%DropBoxFolder%\%FolderBaseName%_!slaveName!" "!slaveName:~6!\*"

    rd /S /Q "!OutputFolder!"

)

pause

最佳答案

您需要:

a) 在其所在目录中调用批处理文件(例如,首先更改目录),并且

b) 消除批处理文件末尾的暂停。

您还应该考虑完全替换批处理文件 - python 可以更简洁地完成所有它做的事情。 接受的答案 this SO问题给出了一些非常好的提示。

关于python - 使用 Python 打开 .bat 文件 - 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986924/

相关文章:

windows - 如何防止执行批处理文件后自动关闭控制台

loops - 新行作为 FOR 循环的分隔符

batch-file - SETLOCAL ENABLEDELAYEDEXPANSION导致CD和PUSHD无法持久保存

windows - 为什么使用命令启动的批处理文件启动的程序在通过 Windows 资源管理器运行时无法运行?

python - 将多个wx.EVT_MENU绑定(bind)到同一个方法?

javascript - 是否可以在Python中创建一个类似于JS间隔的函数?

python - 复制静态变量(文件范围)行为

python - 类型错误 : argument 1 must be a string or unicode object

python - 如何将多个变量写入单个LCD显示行?

batch-file - Windows 批处理文件 : Pipe destroys my return code