2009-04-21 38 views
14

私はCのように私のローカルマシンにこのVBScriptスクリプトを保存:\ Test.vbsを:私は、コマンドラインから実行するとなぜこのVBScriptでエラーが表示されますか?

WScript.StdOut.WriteLine "This is a test" 

、私はこのエラーを取得する:

--------------------------- 
Windows Script Host 
--------------------------- 
Script: C:\test.vbs 
Line: 1 
Char: 1 
Error: The handle is invalid. 
Code: 80070006 
Source:  (null) 

--------------------------- 
OK 
--------------------------- 

私はこれを取得Windows Vista(SP1)およびWindows XP Pro(SP3)では、

答えて

30

このリンクはあなたを助けるかもしれない:

http://www.tech-archive.net/Archive/Scripting/microsoft.public.scripting.vbscript/2004-07/0979.html

コンソールのホスト(cscript.exe)とではないウィンドウホスト(wscript.exeを)使用しているときハンドルStdOutにのみ利用可能であることが表示されます。コードを動作させるには、cscript.exeを実行する必要があります。

また、wscriptではなくcscriptでスクリプトを実行するためのデフォルトの動作を変更する方法についても説明しています。

6

受け入れ答えで記事で説明したように、私は、このようなコマンドプロンプトからそれを呼び出したときに、私のスクリプトが働いた:

cscript test.vbs 

呼び出しがします。cscriptするように、あなたはまた、既定のスクリプトホストを変更することができます毎回必要なわけではありません。それを行った後、元のコマンドは変更されずに動作します。

cscript //h:cscript //s 

あなたがして元の動作を復元することができます。

cscript //h:wscript //s 

感謝!!

1

この問題は、私がこの問題に関連していると感じるバグ「cscript - print output on same line on console?」でこの解決策を提出しました。

JavaScriptでは、wscript環境またはcscript環境のいずれかをサポートするために、次の「ログ」関数を使用します。ご覧のように、この関数はできるだけ標準出力に書き出します。

var ExampleApp = { 
    // Log output to console if available. 
    //  NOTE: Script file has to be executed using "cscript.exe" for this to work. 
    log: function (text) { 
     try { 
      // Test if stdout is working. 
      WScript.stdout.WriteLine(text); 
      // stdout is working, reset this function to always output to stdout. 
      this.log = function (text) { WScript.stdout.WriteLine(text); }; 
     } catch (er) { 
      // stdout is not working, reset this function to do nothing. 
      this.log = function() { }; 
     } 
    }, 
    Main: function() { 
     this.log("Hello world."); 
     this.log("Life is good."); 
    } 
}; 

ExampleApp.Main(); 
+0

このhttp://stackoverflow.com/questions/4999364/try-catch-end-try-in-vbscriptによると、vbscriptはtry catchを持っていません。 vbscriptではどのケースに応じて変数を設定できますか? – barlop

関連する問題