Impossibile installare il font utilizzando VBScript a causa dell'eccezione "Oggetto richiesto: 'objFolderItem'"


0

Ecco il mio script basato su Come installo un font dal prompt dei comandi di 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

Fondamentalmente voglio essere in grado di iterare attraverso una cartella di caratteri e copiare e installare solo se un file di caratteri non esiste in "C: \ Windows \ Fonts" in primo luogo.

Ma quando si tratta di questa riga objFolderItem.InvokeVerb("Install")ho ricevuto questo messaggio di errore:

Oggetto richiesto: 'objFolderItem'

Qual è la causa?

Risposte:


0

Alla fine, solo in questo modo funziona per me:

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: copiare solo i file che non esistono nella cartella dei caratteri

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.