• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:前の入力が消えない)

JScriptで実行される関数の問題:二度目の実行で一度目の結果が残ってしまう

siffon9の回答

  • ベストアンサー
  • siffon9
  • ベストアンサー率64% (136/211)
回答No.2

こんにちは 下記のHTAをWindows8.1とWindows XP sp3で動作させましたが仰られるような現象は発生せず正常に表示されます。mecabの標準出力を一度に読み取る場合も、一行ずつ読み取る場合も問題ありません。 mecabはインストール時にsjisを選択しました。 ご提示いただいた場所とは別の部分に問題があるのではないでしょうか? ------------------------------------------------------------------- <html> <head> <title>mecab.exe テスト</title> <script type="text/jscript"> // mecab.exeのパスは適宜書き換え var cmd = "C:\\bin\\mecab\\bin\\mecab.exe"; var arg1 = "瑞西に住む友人の家では" var arg2 = "或日語学の教師の老婦人が" function exe_mecab(arg){ var wsh = new ActiveXObject("WScript.Shell"); var oExec = wsh.Exec(cmd); //mecab標準入力に文字列を与える oExec.StdIn.Write(arg); oExec.StdIn.Close(); var str = ''; //mecab標準出力を1行ずつ読み取り //var line; //while (!oExec.StdOut.AtEndOfStream) { // line = oExec.StdOut.ReadLine(); // if(line != "EOS"){ // str = str + line + "<br>"; // } //} //mecab標準出力を全て一度に読み取り str = oExec.StdOut.ReadAll(); //結果表示 document.getElementById("result_area").innerHTML=str; } function exeApp1(){ exe_mecab(arg1) } function exeApp2(){ exe_mecab(arg2) } </script> </head> <body> <form name="confirm"> <input type="button" value="確認1" onclick="exeApp1()"> <input type="button" value="確認2" onclick="exeApp2()"> </form> <div id="result_area">結果表示</div> </body> </html>

remokon
質問者

お礼

返答ありがとうございます ご提示のコードで、当方でも当該問題が発生しませんでした。 これから原因を探索します。 今後もおねがいします

関連するQ&A

  • cscriptで文字変数 に ” を入力するには

    お世話になります。 早速ですが、質問があります。 c:\test\test.exe -path "D:\data" -file "aaa.txt" -flag a というコマンドをcscript のプログラムから起動したいのですが、コマンド文字列を文字列変数に代入する方法 がありましたら、教えてください。 Cscript test.vbs %1 ======================================= Dim WshShell Dim oExec Dim Cmd Dim File File = WScript.Arguments(0) Cmd = "c:\test\test.exe -path "D:\data" -file "a.out" -flag " & File                     ↑↑↑↑                  これができません? Set WshShell = CreateObject("WScript.Shell") set oExec = WshShell.Exec(Cmd) Do While oExec.Status = 0 Wscript.Sleep 100 Loop "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

  • Stdinの使い方

    環境はWindowsXP SP2です。 標準入力から一行の入力を待つプログラムAが有ります。 それをWSHスクリプトBから入力させてやりたいです。 仮に、そのAを <A.vbs> s = WScript.Stdin.Readline WScript.Echo "#" & s とします。問題なく動作します。 そしてはBは <B.js> var WshShell = WScript.CreateObject("WScript.Shell"); var oExec = WshShell.Exec("cscript a.vbs"); oExec.StrIn.Write("abcdef"); としました。しかし Microsoft JScript runtime error: 'oExec.StrIn' is null or not an object なるエラーで失敗します。 どうしてでしょうか。

  • WshShell.Runでサーバにアクセスできません。

    拡張子が「js」のファイルでWshShell.Runでサーバにアクセスできません。 var WshShell= new ActiveXObject("WScript.Shell"); WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); while(!WshShell.AppActivate("runas.exe")){ WScript.Sleep(100); } ・ ・ ・ どなたかご教授お願いします。

  • アプリで作成したexeファイルを実行する。

    Fortraで作成したexeファイルをサーバ上で動かしたいのですが 過去の履歴から下記プログラムをみつけましたが 上手く動作しません。 他の方法等ありましたらお教えください。 サーバー OS:Windows serever2003 IIS クライアント OS:Windows XP SP2 fortan 中身:固定のテキストを読んで計算し固定のファイルに結果を書く --------過去検索で見つけたものを元にexe名を変更した------- <html> <body> <SCRIPT LANGUAGE=javascript> <!-- function RunFile(file) { var WshShell = new ActiveXObject("WScript.Shell"); WshShell.Run(file,1); } //--> </SCRIPT> <input type=button value="計算" onClick="RunFile('a.exe')"> </body> </html> エラー:オートメーションサーバーはオブジェクトを作成できません 場所:var WshShell = new ActiveXObject("WScript.Shell"); 動作:クライアント側からIEで開いて実行

  • WSHでシャットダウン

    WSH(JScript)でシャットダウンする方法を教えてください。 OSは2000とXPです。 XPだけなら以下の方法で出来るようですが、 2000で実行するとエラーになってしまいます。 var ws = new ActiveXObject("WScript.Shell"); ws.Run("shutdown -s -f");

  • jscriptの質問

    拡張子が「js」のファイルでWshShell.Runでサーバにアクセスできません。 var WshShell= new ActiveXObject("WScript.Shell"); WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名\Adobe Reader9をサイレントインストールする.bat"); while(!WshShell.AppActivate("runas.exe")){ WScript.Sleep(100); } ・ ・ ・ WshShell.Run("runas /user:ドメイン名\\administrator \\サーバ名… を WshShell.Run("runas /user:ドメイン名\\administrator cmd にすると上手くいきました。 たぶん、「\\サーバ名」の「\」の部分がうまくいってないような気がします どなたかご教授お願いします。

  • javascriptの構文エラー

    下記のようなhtmlファイルを作りましたが、IEで開こうとすると function jikko(){ }←この文字がエラーになってしまいます。構文エラー コード0 WindowsVISTA 標準のIEを使っています。 解決策を教えてください。よろしくお願いします。 <html> <head> <script type="text/javascript"> function jikko(){ var WshShell = new ActiveXObject("WScript.Shell"); Wsh.exec("cmd.exe /c /"%programfiles%//t.bat/""); } </script></head> <body> <button type="button" onclick="jikko()"> </button> </body> </html>

  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • 正規表現検索

    Javaのソースコード内から特定の単語を検索したいのですが、 このとき、以下の条件があります。 (1)ブロックコメント内を無視する (2)行コメント内を無視する (3)変数文字列内を無視する 01 /* 02 * ここの abc はブロックコメント内なので無視する 03 * 04 */ 05 public class Foo() { 06  private int abc = 0; 07 08  public Foo() { 09   // 行コメント内なのでここの abc を無視 10   abc = 1; 11   String s = "変数文字列内の abc これも無視"; 12  } 13 14  public String get() { 15   return " 1'23\" abc " + abc; // この場合後ろの abc のみヒット 16  } 17 } 例えば、上記のテキストで abc を検索したとき、 6、10と15行目の後ろの3箇所のみヒットさせたいのですが、 これはどのように正規表現で記述すればよいのでしょうか。 /* で始まり、*/ が記述されるまでがブロックコメントです。 // があったら、その行末までが行コメントです。 " で囲まれた中が変数文字列です。文字列内の \" は無視します。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • %sの使い方について教えてください。

    %sの使い方について教えてください。 char c[4] = "abc" printf("%s",c); この関数は%sでcのアドレス(&c[0])を読み込み、stdoutにそのアドレスを書込み、文字列abcが表示されると認識しています。 printf("%s",stdin); とすればstdinのアドレスがstdoutに書き込まれて標準入力が表示されると思っていたのですが、実際はprintf("%s",*stdin)としなければ出力されませんなぜでしょうか? 回答をよろしくお願いします。 もう一つ別件なのですが、printf("%d",sizeof *stdin); と入力すると、32と出力されます。 なので、stdinは32バイトの大きさだと認識したのですが、char型の文字が32文字以上を書き込むことができます。(scanf()で入力が失敗して32文字以上の文字をバッファに保管できるということです。) これはどういうことでしょうか、分かる方是非、回答をよろしくお願いします。