Problem with subprocess.call and windows schtasks

Tom Borkin borkintom at gmail.com
Wed Nov 21 00:41:42 CET 2012


Using shlex, I now have this:
#!\Python27\python
import os, subprocess
path = os.path.join("C:\\", "Program Files", "Apache Group", "Apache2",
"htdocs", "ccc", "run_alert.py")
#subprocess.call(['SchTasks', '/Create', '/SC', 'ONCE', '/TN', '"test"',
'/TR', path, '/ST', '23:50'])
subprocess.call(['SchTasks', '/Create', '/SC', 'ONCE', '/TN', '"test"',
'/TR', 'run_alert.py', '/ST', '23:50'])
Both of the above commands throw the same error:
ERROR: The filename, directory name or volume label syntax is incorrect.

Pls advise.
TIA,
Tom



On Sun, Nov 18, 2012 at 12:39 PM, Chris Rebert <clp2 at rebertia.com> wrote:

> On Sun, Nov 18, 2012 at 5:48 AM, Tom Borkin <borkintom at gmail.com> wrote:
> > Hi,
> > I have this code:
> >
> > #!\Python27\python
> >
> > import subprocess
> > #subprocess.call(['SchTasks /Create /SC ONCE /TN "My Tasks" /TR
> "C:/Program
> > Files/Apache Group/Apache2/htdocs/ccc/run_alert.py" /ST 07:50'],
> shell=True)
> > subprocess.call(['SchTasks /Create /SC ONCE /TN "test" /TR "run_alert.py"
> > /ST 07:50'], shell=True)
> > With either call, I get this error:
> > C:\Program Files\Apache Group\Apache2\htdocs\ccc>cron_alert_activity.py
> > The system cannot find the path specified.
> >
> > If I remove the ", shell=True" I get this:
> > C:\Program Files\Apache Group\Apache2\htdocs\ccc>cron_alert_activity.py
> >  C:\Program Files\Apache Group\Apache2\htdocs\ccc\cron_alert_activity.py,
> > line 4, in <module>
> >   subprocess.call(['SchTasks /Create /SC ONCE /TN "test" /TR
> "run_alert.py"
> > /ST 07:50'])
> >  File "C:\Python27\lib\subprocess.py", line 493, in call
> >   return Popen(*popenargs, **kwargs).wait()
> >  File "C:\Python27\lib\subprocess.py", line 679, in __init__ errread,
> > errwrite)
> >  File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
> > startupinfo)
> > WindowsError: [Error 2] The system cannot find the file specified
> > The file exists in said directory. I can execute it from the cmd prompt.
>
> Per the docs (
> http://docs.python.org/2/library/subprocess.html#frequently-used-arguments
> ):
> "If passing a single string [as the `args` argument], either `shell`
> must be True (see below) or else the string must simply name the
> program to be executed **without specifying any arguments.**"
> (emphasis mine)
>
> > So I tried this:
> > pgm = "SchTasks"
> > args = ['/Create /SC ONCE /TN "test" /TR "run_alert.py" /ST 07:50']
> > #args = ['/Create', '/SC ONCE', '/TN "test"', '/TR "run_alert.py"', '/ST
> > 07:50']
> > cmd = [pgm]
> > cmd.extend(args)
> > subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
> > but got this error:
> > ERROR: Invalid argument/option - <<the above argument>>
> >
> > If I use the other args list I get this error:
> > ERROR: Invalid argument/option - '/SC ONCE'
> > so apparently it liked the first argument.
> >
> > Please advise.
>
> Your tokenization of your command is incorrect. Consult the Note box
> in the docs regarding `args` tokenization, and apply it to your
> command:
> http://docs.python.org/2/library/subprocess.html#subprocess.Popen
>
> The-docs-are-your-friend-ly Yours,
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20121120/1ea7878d/attachment-0001.html>


More information about the Python-list mailing list