vbscript中的下标超出范围

vbscript中的下标超出范围,vbscript,Vbscript,我正在编写一个脚本来检查文件夹共享,在该脚本中,我将文件夹位置作为变量传递给脚本(例如:script.vbs D:\share),但运行该脚本时,我收到一个错误“下标超出范围vbscript 800a0009” 下面给出的脚本 Const EVENT_TYPE_ERROR = 1 Const EVENT_TYPE_WARNING = 2 Const EVENT_TYPE_INFORMATION = 4 Set oParameters = WScript.Arguments Set WshS

我正在编写一个脚本来检查文件夹共享,在该脚本中,我将文件夹位置作为变量传递给脚本(例如:script.vbs D:\share),但运行该脚本时,我收到一个错误“下标超出范围vbscript 800a0009”

下面给出的脚本

Const EVENT_TYPE_ERROR   = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

Set oParameters = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell") 

ShareName = oParameters(6)
clog = "Windows Share"
Source = "ShareSecurity"

Dim WshShell
Set objShell = CreateObject("WScript.Shell")
set ObjExec = objShell.exec("icacls """"& ShareName & """"")
Set objStdOut = ObjExec.StdOut

While Not objStdOut.AtEndOfStream
   strLine = objStdOut.ReadLine
   If InStr(strLine,"Everyone") Then
set ObjExec1 = objShell.exec("icacls """"& ShareName & """"")
completeshare = ObjExec1.StdOut.ReadAll()
strCommand = "eventcreate /T Error /ID 422 /L " & Chr(34) & Clog & Chr(34) & " /SO " & source & " /D " & Chr(34) & completeshare & "Network share with Every one access is created and the information is given below" & Chr(34)
WshShell.Run strcommand

   End If
Wend

wscript.quit
这:

应该是这样的:

ShareName = oParameters(0)
阅读并遵循以下文件:

参数
属性包含。使用基于零的索引检索 此集合中的各个参数

因此,如果预期的
Script.vbs D:\share
(或
Script.vbs“D:\share”
),请使用下一个代码段:

Set oParameters = WScript.Arguments
If oParameters.Count > 0 Then
   ShareName = oParameters(0)
Else
   '   usage prompt and then `Wscript.Quit`, or
   ShareName = "some default value"
End If
当我像下面这样解析变量时,这个函数起作用了, script.vbs 1 2 3 4 5 6 D:\share 工作!!!!
感谢大家的宝贵意见。

为什么
oParameters(6)
?只是想问同样的问题^^@Nikki9696,因为他们可能会将共享名作为参数7传递到脚本中?仍然是7,所以质疑是可以理解的。他在他的帖子中特别给出了一个没有其他论点的例子。如果没有其他参数,则(6)将超出范围。这更多是一个注释/回复,而不是答案。是的,我应该使用opParameters(0),我正在尝试从传递参数6的应用程序获取值,现在它工作正常。我已修改了脚本。从ShareName=opParameters(0)到ShareName=opParameters(6)
Set oParameters = WScript.Arguments
If oParameters.Count > 0 Then
   ShareName = oParameters(0)
Else
   '   usage prompt and then `Wscript.Quit`, or
   ShareName = "some default value"
End If
Const EVENT_TYPE_ERROR   = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

Dim WshShell, ShareName

Set oParameters = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell") 

ShareName = oParameters(6)
clog = "Application"
Source = "EventCreate"

Set objShell = CreateObject("WScript.Shell")
set ObjExec = objShell.exec("icacls """& ShareName &"""")
Set objStdOut = ObjExec.StdOut

While Not objStdOut.AtEndOfStream
   strLine = objStdOut.ReadLine
   If InStr(strLine,"Everyone") Then

set ObjExec1 = objShell.exec("icacls """& ShareName &"""")
completeshare = ObjExec1.StdOut.ReadAll()
strCommand = "eventcreate /T Error /ID 425 /L " & Chr(34) & Clog & Chr(34) & " /SO " & source & " /D " & Chr(34) & "Network share with Every one access is created and the information is given below " & Chr(13) & Chr(13) & completeshare & Chr(34)
'strCommand = "eventcreate /T Error /ID 1999 /L APPLICATION /D" & Chr(34) & "Network share with Every one access is created and the information is given below " & Chr(13) & Chr(13) & completeshare & Chr(34)

WshShell.Run strcommand

   End If
Wend

wscript.quit