在VBScript中使用invokeVerb作为数组

时间:2018-03-09 14:20:28

标签: arrays vbscript

我找到了一个安装字体的脚本,我编辑它来安装一些字体(字体数组),但它没有运行。此行引发错误:

array.InvokeVerb("Install")

似乎用另一个函数替换InvokeVerb但我不知道!

有人可以帮助我吗?

我的剧本:

Option Explicit
'Installing multiple Fonts in Windows 7

Dim objShell, objFSO, wshShell
Dim strFontSourcePath, objFolder, objFont, objNameSpace, objFile
Dim array : Set array = CreateObject("System.Collections.ArrayList")

Set objShell = CreateObject("Shell.Application")
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = createobject("Scripting.Filesystemobject")

strFontSourcePath = "C:\Users\Win7\Desktop\new_Software\Fonts"

If objFSO.FolderExists(strFontSourcePath) Then
  Set objNameSpace = objShell.Namespace(strFontSourcePath)
  Set objFolder = objFSO.GetFolder(strFontSourcePath)

  For Each objFile In objFolder.Files
    If LCase(Right(objFile,4)) = ".ttf" Or LCase(Right(objFile,4)) = ".otf" Then
      array.Add objNameSpace.ParseName(objFile.Name)
    End If
  Next
  array.InvokeVerb("Install")
Else
  WScript.Echo "Font Source Path does not exists"
End If

1 个答案:

答案 0 :(得分:0)

ArrayList个对象没有InvokeVerb方法,而VBScript不像PowerShell那样提供member enumeration(这将允许解释器调用数组项上的方法rahter比阵列本身。)

正如ACatInLove已提到的那样,您需要使用For Each循环来枚举数组元素并在每个元素上调用该方法:

For Each el In array
  el.InvokeVerb("install")
Next