2017-01-05 3 views
5

В Windows 7, я получаю сообщение об ошибке в следующей строке в моем VBScript:Является ли wsh зарезервированным словом в VBScript?

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

Ошибка:

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

Используя любое имя, кроме wsh работ.

Я просмотрел информацию в Интернете, но страницы для зарезервированных ключевых слов не упоминаются ни в одном упоминании о wsh.

я бегу выше сценарий, используя CSCRIPT команду в процессоре CMD.

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 является встроенным псевдонимом для WScript объекта, что позволяет писать

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

вместо

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

Насколько мне известно, это однако документация не распространяется.


Edit: Видимо, вы можете обойти эту проблему, определив wsh в качестве переменной перед использованием:

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

Однако, обратите внимание, что сделать это будет полностью маскировать исходный идентификатор, то есть вы не сможет вернуть исходное поведение, не покидая контекста, в котором была определена переменная (что в случае глобальных переменных означает перезапуск интерпретатора), потому что вы can't un-dim a variable.