2017-01-05 18 views
5

は、私はVBScriptで次の行のエラーを取得:wshはVBScriptの予約語ですか? Windows 7では

Set wsh = WScript.CreateObject("WScript.Shell") 

エラー:

Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment: 'wsh'

wsh作品以外の任意の名前を使用します。

私は情報を求めてウェブを吟味しましたが、予約済みキーワードのページにはwshの言及はありません。

CMDプロセッサでcscriptコマンドを使用して上記のスクリプトを実行します。質問の後

UPDATEが応答された:

Dim wshとして変数を宣言すると、スクリプトでの使用が可能、そのキーワードのステータスを上書きします。ここでは、質問を投稿した後、この情報に出くわした:http://forums.devshed.com/visual-basic-programming-52/bizzare-finding-username-918597.html

+3

はい。 'wsh'は[' WScript'](https://msdn.microsoft.com/en-us/library/at5ydy31.aspx)オブジェクトの組み込みエイリアスです。 –

+2

@AnsgarWiechersどこに書かれているのかわかりません。これは良い質問です。私はずっと以前から「wsh」に出会ったことはありません。 –

+0

@ rory.apどこでも文書化されているとは思えません。少なくとも、私はそれを説明する文書は見ていません。私は数年前にvisualbasicscript.comフォーラムでそれについて学んだと思う。 –

答えて

8

wshあなたは

wsh.Echo "foo" 
wsh.StdErr.WriteLine "bar" 
wsh.Quit 42 

の代わりに、私の知る限り

WScript.Echo "foo" 
WScript.StdErr.WriteLine "bar" 
WScript.Quit 42 

これを書くためにできるように、WScriptオブジェクトの組み込みエイリアスでありますしかし、ドキュメンテーションの対象にはなりません。


編集:はどうやらあなたがそれを使用する前に、変数としてwshを定義することで問題を回避することができます。しかし

Dim wsh 
Set wsh = CreateObject("WScript.Shell") 

、そうすることが、完全に元の識別子をマスクすることに注意してください、あなた、すなわちcan't un-dim a variableなので、変数が定義されたコンテキスト(グローバル変数の場合はインタープリタの再起動を意味する)を残さずに元の動作を元に戻すことはできません。

関連する問題