user1765661
user1765661

Reputation: 595

Open .bat file with Python - not working

I have 3 different files, one Python file and two .bat files. They communicate between each other (hopefully).

When I execute the "Process_Videos.bat" by itself (double clicking in the windows explorer) it works fine, but whenever I call it from the Python file it doesnt work at all, just says "press any button to continue..."

I really need to have this structure, calling the "Process_Videos.bat" from a Python file, since I am extracting some web info. The "pythonExecute.bat" just works as a trigger for the entire process.

Also I have tried the "subprocess" approach, but not working either.

The files and respective code:

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

Upvotes: 1

Views: 1348

Answers (1)

Steve Barnes
Steve Barnes

Reputation: 28405

You need to:

a) Invoke your batch file within the directory it is in, (e.g. by changing directory first), and

b) Get rid of the pause at the end of the batch file.

You should also consider replacing the batch file altogether - python can do all of the things that it does much more neatly. The accepted answer to this SO question gives some very good tips.

Upvotes: 2

Related Questions