1

ユーザーがWebページ上のリンクをクリックしたときに、.batファイルを実行する必要があります。.batファイルは基本的に別の実行可能ファイルを実行し、その出力をテキストファイルに保存します。したがって、ユーザーがWebページ上の.batファイルへのリンクをクリックしたら、そのテキストファイルを作成する必要があります。これで、.batファイルを個別に実行すると完全に機能し、内容を含むテキストファイルが作成されますが、リンクをクリックすると空のテキストファイルが作成されます。私はすべての道を見ました、それらはすべて良いです。バッチファイルを使用しています。関数runApp(which){WshShell = new ActiveXObject( "WScript.Shell");も試しました。WshShell.Run(which、1、true); ただし、どちらもテキストファイルを作成するだけで、コンテンツを配置することはありません。

誰かがこれについて何か考えを持っていますか?また、元の.batファイルを実行し、その出力をhtml / javascriptで直接テキストファイルに取得するなど、これを行う他の方法はありますか?

助けてくれてありがとう

4

2 に答える 2

2

使用している環境については何も言わず、サーバー側の環境では使用していないと思います。JavaScriptは通常、ユーザーのクリックやマウスの動きなどに応答するためにブラウザーで機能しますが、厳密にはブラウザーの範囲内です。実行しようとしているのは、ブラウザが実行されている基盤となるOS(ローカルで実行されている場合)または通常のWebページ環境のサーバー側OSでI/O操作を実行することです。これは単なるセキュリティの問題ではありません。JavaScriptは、クライアントのOSやサーバー側のOSに直接接続していません。

必要なのは、ApacheやIISなどのWebサーバー環境で、おそらくASP.NET、JSP、PHP(CodeIgniterのような優れたフレームワークを使用)、または私ではなくCGIのような環境を実行しています。

ユーザーがリンクまたは送信ボタンをクリックして、サーバーにリクエストを送信します。関連するサーバー側プログラムが要求を処理し、話し合ったI / O操作を実行して、テキストで応答します。JavaScriptは、そのプロセスのほとんどには関係ありません。それは、あなたが何らかの派手な動的な方法で応答を表示する方法を理解しようとしているときにのみ、再びそれ自身になります。

そこには何百万ものチュートリアルがあります:

そうは言っても、サーバー側のJavaScript環境(http://nodejs.org/)がありますが、要点は、サーバーにリクエストを送信することを意味するhttpプロトコルの制限によって常に制限されるということです。サーバーは、クライアントとしての特権に応じてリクエストを処理し、必要に応じてI / O操作を実行し、HTMLのストリームで応答します。サーバー上での直接操作は許可されません。

これはどれも簡単なことではありません。急な学習曲線を期待してください。

テキストファイルの内容を表示する

これは、テキストファイルの内容を読み取ってWebページに表示するサンプル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(Webアプリケーションのルートからの)仮想絶対パスです。toの呼び出しgetRealPathは、Fileオブジェクトを作成できる実際の物理パスを取得する方法です。

後でexecバッチファイルの実行に使用する方法について説明しますが、Javaのような強力な言語/ライブラリを考えているのに、なぜバッチファイルを実行するのでしょうか。プログラムをJavaで書くのは意味がありませんか?

于 2012-06-07T23:37:17.647 に答える
-1

node.jsのchild_process.spawnを使用します

于 2013-08-06T09:06:53.487 に答える