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