在html上使用javascript运行.bat文件

时间:2012-06-07 23:12:37

标签: javascript html

当用户点击网页上的链接时,我需要运行.bat文件。 .bat文件基本上运行另一个可执行文件并将其输出保存在文本文件中。所以我想要的是在用户点击网页上的.bat文件链接后创建该文本文件。现在,当我单独执行它时,我的.bat文件工作正常,它会创建带有内容的文本文件,但不知何故,当我点击链接时,它会创建一个空文本文件。我看着所有的路径,它们都很好; 我在用     批处理文件, 我也试过了          函数runApp(其中)     {WshShell = new ActiveXObject(“WScript.Shell”);        WshShell.Run(其中,1,真);     }      但是他们两个只是创建文本文件,而不是放内容

有没有人对此有任何想法,还有其他方法可以做到这一点,比如运行原始的.bat文件,然后直接用html / javascript在文本文件中输出它?

任何帮助 谢谢

2 个答案:

答案 0 :(得分:2)

您没有说明您正在使用的环境,我猜您不会使用服务器端环境。 JavaScript通常在浏览器中工作,以响应用户的点击和鼠标移动等,但严格限制在浏览器的范围内。您要做的是在运行浏览器的底层操作系统上执行I / O操作(如果您在本地运行)或在正常网页环境中的服务器端操作系统上执行I / O操作。这不仅仅是一个安全问题 - JavaScript根本没有与客户端操作系统或服务器端操作系统的任何直接连接。

你需要的是一个像Apache或IIS等网络服务器环境,可能运行像ASP.NET,JSP,PHP这样的环境(有一个很好的框架,比如CodeIgniter),或者说比我还要CGI。

用户单击链接或提交按钮,并向服务器发送请求。相关的服务器端程序处理请求,运行您谈论的I / O操作并响应文本。 JavaScript在大多数过程中都无关紧要。当你试图找出如何以某种奇特的动态方式显示响应时,它才会再次出现。

那里有数以百万计的教程:

说了这么多,有一个服务器端的JavaScript环境(http://nodejs.org/),但重点是你将永远受限于http协议的限制,这意味着你发送请求服务器,服务器根据您作为客户端的权限处理您的请求,在适当的情况下执行I / O操作,并使用HTML流进行响应。它不允许在服务器上直接操作。

这一切都不容易。期待陡峭的学习曲线。

显示文本文件内容

这是一个示例JSP页面,它将读取文本文件的内容,然后将其显示在网页上。我没有添加任何按钮或任何东西 - 它只演示了如何在服务器上读取文件:

<%@page contentType="text/html" pageEncoding="UTF-8" import="java.io.*"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>BufferedReader</title>
</head>
<body>
    <%
    String path = this.getServletContext().getRealPath("/target/message.txt");
    File file = new File(path);
    FileReader reader = new FileReader(file);
    BufferedReader br = new BufferedReader(reader);
    while(br.ready()){
        out.print(br.readLine() + "<BR>");
    }
    reader.close();
    %>
</body>
</html>

/target/message.txt是虚拟绝对路径(来自webapp的根目录)。对getRealPath的调用是您获得允许您创建File对象的真实物理路径的方式。

稍后我会看一下使用exec来运行批处理文件,但是现在您正在考虑像Java一样强大的语言/库,为什么要运行批处理文件?用Java编写程序是否有意义?

答案 1 :(得分:-1)

使用node.js的child_process.spawn