当用户点击网页上的链接时,我需要运行.bat文件。 .bat文件基本上运行另一个可执行文件并将其输出保存在文本文件中。所以我想要的是在用户点击网页上的.bat文件链接后创建该文本文件。现在,当我单独执行它时,我的.bat文件工作正常,它会创建带有内容的文本文件,但不知何故,当我点击链接时,它会创建一个空文本文件。我看着所有的路径,它们都很好; 我在用 批处理文件, 我也试过了 函数runApp(其中) {WshShell = new ActiveXObject(“WScript.Shell”); WshShell.Run(其中,1,真); } 但是他们两个只是创建文本文件,而不是放内容
有没有人对此有任何想法,还有其他方法可以做到这一点,比如运行原始的.bat文件,然后直接用html / javascript在文本文件中输出它?
任何帮助 谢谢
答案 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