1

当用户单击网页上的链接时,我需要运行一个 .bat 文件。.bat 文件基本上运行另一个可执行文件并将其输出保存在文本文件中。所以我想要的是在用户单击网页上的 .bat 文件的链接后创建该文本文件。现在,当我单独执行它时,我的 .bat 文件运行良好,它会创建包含内容的文本文件,但不知何故,当我单击链接时,它会创建一个空文本文件。我看了看所有的路径,它们都很好;我正在使用批处理文件,我也尝试过 function runApp(which) { WshShell = new ActiveXObject("WScript.Shell"); WshShell.Run (which,1,true); 但他们都只是创建文本文件,而不是把内容

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

Appriciate任何帮助谢谢

4

2 回答 2

2

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

您需要的是一个像 Apache 或 IIS 等的 Web 服务器环境,可能运行像 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编写程序没有意义吗?

于 2012-06-07T23:37:17.647 回答
-1

使用 node.js 的 child_process.spawn

于 2013-08-06T09:06:53.487 回答