Não é possível instalar a fonte usando o VBScript devido à exceção “Object Required: 'objFolderItem'”

0

Aqui está meu script baseado em Como faço para instalar uma fonte do prompt de comando do Windows?

Dim WinFontDir
Dim SrcFontDir
WinFontDir = "C:\Windows\Fonts"
SrcFontDir = "..\fonts.test"


Set objShell = CreateObject("Shell.Application")
Set objFontFolder = objShell.Namespace(WinFontDir)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSrc = objFSO.GetFolder(SrcFontDir)
Set colFiles = objSrc.Files
For each objFile in colFiles
    If objFSO.FileExists(WInFontDir + "\" + objFile.Name) Then
        WScript.Echo objFile.Name 
    else
        WScript.Echo "Copying " + objFile.Name
        objFSO.CopyFile SrcFontDir + "\" + objFile.Name, WinFontDir + "\" + objFile.Name
        Set objFolderItem = objFontFolder.ParseName(objFile.Name)
        objFolderItem.InvokeVerb("Install")  // <- exception
    End If
Next

Basicamente eu quero ser capaz de iterar através de uma pasta de fontes, e apenas copiar e instalar se um arquivo de fonte não existir em "C: \ Windows \ Fonts" em primeiro lugar.

Mas quando se trata desta linha objFolderItem.InvokeVerb("Install") , recebi esta mensagem de erro:

Objeto obrigatório: 'objFolderItem'

Qual é a causa?

    
por Anthony Kong 10.11.2014 / 11:42

1 resposta

0

No final, só assim funciona para mim:

Dim WinFontDir
Dim SrcFontDir
WinFontDir = "C:\Windows\Fonts"
SrcFontDir = "..\fonts"

Set objShell = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSrc = objFSO.GetFolder(SrcFontDir)
Set colFiles = objSrc.Files
For each objFile in colFiles
    If Not objFSO.FileExists(WInFontDir + "\" + objFile.Name) Then
        WScript.Echo "Copying " + objFile.Name
        FONTS = &H14&
        Set objFontFolder = objShell.Namespace(FONTS)
        objFontFolder.CopyHere objFile.Path
    End
Next

Nota: Copie apenas arquivos que não existem na pasta de fontes

    
por 11.11.2014 / 00:00