2017-01-05 19 views
5

Trên Windows 7, tôi nhận được một lỗi cho các dòng sau trong VBScript của tôi:Có phải là một từ dành riêng trong VBScript không?

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

Lỗi:

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

Sử dụng bất kỳ tên nào khác hơn wsh công trình.

Tôi đã xóa web để biết thông tin, nhưng các trang dành cho từ khóa được đặt trước không tham chiếu bất kỳ đề cập nào về số wsh.

Tôi chạy tập lệnh ở trên bằng cách sử dụng lệnh cscript trong bộ xử lý CMD.

CẬP NHẬT SAU CÂU HỎI đã được trả lời:

Tuyên bố biến như Dim wsh đè tình trạng từ khóa của nó, cho phép việc sử dụng nó trong kịch bản. Đi qua thông tin này sau khi công bố câu hỏi, ở đây: http://forums.devshed.com/visual-basic-programming-52/bizzare-finding-username-918597.html

+3

Có. 'wsh' là một bí danh dựng sẵn cho đối tượng [' WScript'] (https://msdn.microsoft.com/en-us/library/at5ydy31.aspx). –

+2

@AnsgarWiechers Tôi không thể tìm thấy tài liệu đó ở bất kỳ đâu. Đây là một câu hỏi hay. Tôi đã không bao giờ đi qua 'wsh' trước đây trong tất cả các năm của tôi. –

+0

@ rory.ap Tôi không nghĩ rằng nó được ghi lại ở bất cứ đâu (ít nhất là tôi chưa thấy bất kỳ tài liệu nào hướng dẫn nó). Tôi nghĩ rằng tôi đã học về nó trong các diễn đàn visualbasicscript.com một vài năm trở lại. –

Trả lời

8

wsh là một bí danh BUILTIN cho đối tượng WScript, cho phép bạn viết

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

thay vì

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

Theo hiểu biết của tôi này Tuy nhiên, tài liệu này không được đề cập đến.


Edit: Rõ ràng bạn có thể làm việc xung quanh vấn đề này bằng cách định nghĩa wsh như là một biến trước khi sử dụng nó:

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

Tuy nhiên, lưu ý rằng làm như vậy sẽ hoàn toàn che giấu nhận dạng ban đầu, nghĩa là bạn sẽ không thể lấy lại hành vi ban đầu mà không rời khỏi ngữ cảnh trong đó biến được xác định (trong trường hợp các biến toàn cầu có nghĩa là khởi động lại trình thông dịch), bởi vì bạn can't un-dim a variable.

Các vấn đề liên quan