2009-04-21 16 views
14

मैं ग के रूप में अपने स्थानीय मशीन को यह VBScript स्क्रिप्ट सहेज: \ test.vbs:यह वीबीस्क्रिप्ट मुझे एक त्रुटि क्यों देता है?

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

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

मैं इस मिल:

WScript.StdOut.WriteLine "This is a test" 

जब मैंने इसे कमांड लाइन से चलाने के लिए, मैं इस त्रुटि मिलती है विंडोज विस्टा (एसपी 1) और विंडोज एक्सपी प्रो (एसपी 3) के तहत।

उत्तर

30

इस लिंक से आपको मदद मिल सकती है:

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

ऐसा लगता है कि संभाल StdOut ही उपलब्ध है जब एक सांत्वना मेजबान (cscript.exe) और नहीं एक विंडोड मेजबान (wscript.exe) का उपयोग कर। यदि आप कोड को काम करना चाहते हैं, तो आपको इसे चलाने के लिए cscript.exe का उपयोग करना होगा।

पोस्ट यह भी वर्णन करता है कि सीएसएसक्रिप्ट के साथ स्क्रिप्ट चलाने के लिए डिफ़ॉल्ट व्यवहार को कैसे बदला जाए और wscript नहीं। ,

cscript test.vbs 

तुम भी डिफ़ॉल्ट स्क्रिप्ट मेजबान बदल सकते हैं ताकि एक फोन CSCRIPT रहे हैं:

6

स्वीकार किए जाते हैं जवाब में लेख द्वारा बताया गया है, मेरी स्क्रिप्ट काम किया जब मैं इस तरह कमांड प्रॉम्प्ट से यह कहा जाता है हर बार जरूरी नहीं है। ऐसा करने के बाद, मूल आदेश unmodified काम करता है।

cscript //h:cscript //s 

आप के साथ मूल व्यवहार को बहाल कर सकते हैं:

cscript //h:wscript //s 

धन्यवाद !!

1

मैंने इस समाधान को बग "cscript - print output on same line on console?" में सबमिट किया जो मुझे लगता है कि इस मुद्दे से संबंधित है।

मैं या तो 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 के अनुसार पकड़ने की कोशिश नहीं है। क्या आप vbscript में, किस मामले के आधार पर एक चर सेट करने में सक्षम हैं? – barlop

संबंधित मुद्दे