【问题标题】:Run a .bat file from a Python CGI file with Apache Webserver使用 Apache Webserver 从 Python CGI 文件运行 .bat 文件
【发布时间】:2016-09-07 16:36:18
【问题描述】:

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

我有一个我想运行的 .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()

【问题讨论】:

    标签: python windows apache batch-file


    【解决方案1】:

    您可以使用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)
    ...
    

    【讨论】:

      猜你喜欢
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 2013-11-26
      • 1970-01-01
      相关资源
      最近更新 更多