使用Apache Webserver从Python CGI文件运行.bat文件

时间:2016-09-07 16:36:18

标签: python windows apache batch-file

这可能很容易。但它只是不适合我。

我有一个我想运行的.bat文件,它在服务器上运行,并且应该发送带有附件的电子邮件。

.bat文件工作正常,它会发送包含日志和所有内容的电子邮件。

现在我想从Web服务器运行该文件。这样我就可以点击一个HTML表单按钮,然后执行它。

我已经安装了Apache,Python 2.7。

我已经将Apache配置为允许cgi文件,当我将文件作为index.py放入以下代码时,它就可以工作。

但是当我按下提交按钮时,它会通过,但是.bat文件没有被执行。救命! :)

我是否有另一种方法可以运行.bat文件来从Web服务器上执行某些操作?先谢谢你。

我尝试将表单中的操作指向.py和.cgi文件...不要让它工作

我一直在使用的代码下面。

#!/Python27/python
#!/usr/bin/env python
import cgi
import cgitb; cgitb.enable()  
print "Content-type: text/html"
print
print "<html><head>"
print "<form action='../cgi-bin/send_email.py'>"
print "<input type='submit' value='Submit'>"
print "</form>"

send_email.py看起来像这样。

#!/Python27/python
#!/usr/bin/env python
import cgi
import cgitb; cgitb.enable()

from subprocess import Popen

p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
    stdout, stderr = p.communicate()

1 个答案:

答案 0 :(得分:0)

您可以使用cmd.exe调用批处理文件:

...
cmd     = r'c:\Windows\System32\cmd.exe'
batDir  = r'C:\Path\to\batchfolder'
batName = r'batch.bat'
p = Popen(r"{0} /C {1}\{2}".format(cmd,batDir,batName), cwd=batDir)
...