0

I have a batch file, which I'm trying to run with python and it doesn't work for some reason. The batch file specifies path, then executes a certain command, like this:

Path= %systemdrive%\somefolder\secondfolder\Step1
setupEP.exe ADDLOCAL="tp"

Then python script should this file and then does some other things, which are irrelevant for the current some other similar files. The problem is batch files aren't been executed. Below is my python script

def func1():

    os.popen(r"%systemdrive%\s1.bat")
def func1():

    os.popen(r"%systemdrive%\s2.bat")

list=[func1(),func2()]

for i in list:
    t1=threading.Thread(target=i, args=(1,))
    t1.start()
    t1.join()

If I substitute the batch execution with some random loop, like

for i in range(0,60):
     print i

Everything works perfectly Help anyone?

1
  • 2
    Don't overwrite PATH. Update it instead set "PATH=%systemdrive%\somefolder\secondfolder\Step1;%PATH%"
    – dcg
    Commented Apr 20, 2017 at 13:21

2 Answers 2

2

.Thread should receive a callable object, you are passing func1() which is the result of the object after being called.

You basically need my_list = [func1, func2]

In your case, the batch files run only once on script start, not during your for loop.

3
  • 1. How do you explain then, that my script runs counting to 60? 2. That doesn't explain why batch files aren't been executed. They should have been executed at least one time
    – Michael
    Commented Apr 20, 2017 at 17:08
  • They aren't being executed because you call them only once. Your for loop does run 60 times. Pass them a callable! Passfunc not func(). Commented Apr 21, 2017 at 17:35
  • Accepted. Thanks.
    – Michael
    Commented Apr 23, 2017 at 11:04
0

You should try calling the batch file instead of opening it. Try something like

call("PathToFile/File.bat") 

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.