Использование invokeVerb для массива в 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

Вам нужно сделать InvokeVerb в цикле For ... Next.

ACatInLove 11.03.2018 02:43
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
1
370
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объекты ArrayList не имеют метода InvokeVerb, а VBScript не предоставляет перечисление участников, как это делает PowerShell (что позволило бы интерпретатору вызывать метод для элементов массива, превышающих размер самого массива).

Как уже упоминалось в ACatInLove, вам необходимо использовать цикл For Each для перечисления элементов массива и вызова метода для каждого элемента:

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

Другие вопросы по теме