Come installo un font dal prompt dei comandi di Windows?


37

È possibile installare i caratteri dal prompt dei comandi su Windows? Se sì, qual è il comando?

Ho provato copy [fontname].ttf C:\Windows\Fonts\e ha detto che la copia era completa, ma non sono riuscito a trovare i suddetti caratteri nella cartella Fonts né a trovarli nell'elenco dei caratteri di nessun programma, quindi sicuramente non ha funzionato. (Anche se in seguito sono stato in grado di eliminare i suddetti caratteri dalla cartella Fonts)


Risposte:


31

È possibile ma devi scrivere uno script di shell di Windows per farlo. La copia da sola non installa il carattere: devi anche registrarlo, ad es

copy "FontName.ttf" "%WINDIR%\Fonts"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "FontName (TrueType)" /t REG_SZ /d FontName.ttf /f

In alternativa è possibile le seguenti righe di codice per soddisfare le proprie esigenze; salvarlo come file .vbs e quindi eseguirlo.

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("<Folder or Share Location>")
Set objFolderItem = objFolder.ParseName("<TTF File Name>")
objFolderItem.InvokeVerb("Install")

Esempio:

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Windows\Font")
Set objFolderItem = objFolder.ParseName("Myriad Pro.ttf")
objFolderItem.InvokeVerb("Install")

Un'altra alternativa è installare i caratteri "temporanei", solo per la sessione dell'utente corrente. L'idea è di eseguire fontview.exeper ogni carattere, che lo rende disponibile per altre applicazioni Windows:

for /F "delims=;" %%a in ('dir C:\ExtraFonts /B /A-D-H-S /S') do fontview %%a

Vedi la soluzione completa qui .


Vuole essere così gentile di estendere lo script a: (1) installare automaticamente tutti *.ttfe *.fonfont dalla directory corrente (2) Uso Const FONTS = &H14&come suggerito qui ( sevenforums.com/general-discussion/... ). Non sono il re su VBS :( Grazie in anticipo.
dma_k,

1
objFolderItem.InvokeVerb("Install")non funziona su Windows Server 2012 R2
Anthony Kong,

@GeneQ: The copye reg addnon rende il carattere elencato nei programmi in Windows® 10.
user2284570

16

In Powershell questo può essere semplice come:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }

3
Vorrei cambiare la seconda riga conGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov il

2
Certo, Get-ChildItemè il modo Powershell, odio solo il modo Powershell (affetto da shell Unix qui), ed dirè solo un alias per quello; e se si desidera ricorsione, le opzioni fornite sono la strada da percorrere. Per il semplice "basta scansionare i file in questa cartella", la mia versione è meno dettagliata e più leggibile.
Guss

5

Simile alla soluzione di GeneQ, ecco una versione che lo fa per tutti i file .ttf nella directory dello script:

Set ofso = CreateObject("Scripting.FileSystemObject")
SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)

Const FONTS = &H14&

Set objShell  = CreateObject("Shell.Application")
Set oSource   = objShell.Namespace(SourceFolder)
Set oWinFonts = objShell.Namespace(FONTS)

' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"

FOR EACH FontFile IN oSource.Items()
    IF rxTTF.Test(FontFile.Path) THEN   
        oWinFonts.CopyHere FontFile.Path
    END IF
NEXT

Mi hai appena salvato la vita :) Il mio carattere predefinito di Windows è stato danneggiato e questo è stato l'unico modo in cui ho potuto reinstallare tutti i caratteri predefiniti di Windows. Grazie!!
Rima,

perfezionare! L'ho usato in un vbs gestito da un file bat per un certo numero di computer dopo una nuova marca dell'azienda. Installa i caratteri, installa i file delle firme e-mail per Outlook e imposta la home page del browser
Reece

3

È inoltre possibile utilizzare l' utilità FontReg per installare i caratteri da un prompt dei comandi.


1
Questo non ha funzionato per me su Windows 10 a 64 bit.
Djangofan,

1
@djangofan: stavi usando un prompt dei comandi elevato? Non ho ancora provato fontreg su Windows 10, ma mi aspetto che sia richiesto.
Afrazier

Il problema era che stavo cercando di installare caratteri Mac sul mio sistema (non hanno estensioni di file). Ho i file dei font .ttf di Windows ed è tutto a posto ora.
Djangofan,

1

Crea un file di script chiamato InstallFonts.vbs nel mio caso lo metto in C: \ PortableApps \ InstallFonts \ IN nel codice seguente sostituisci "SomeUser" con il nome utente della persona che desideri installare i caratteri. Quindi crea l'appropriata cartella "installa caratteri" sul desktop.

    Set ofso = CreateObject("Scripting.FileSystemObject")
'SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)
SourceFolder = "C:\Users\SomeUser\Desktop\Install Fonts"


Const FONTS = &H14&

Set objShell  = CreateObject("Shell.Application")
Set oSource   = objShell.Namespace(SourceFolder)
Set oWinFonts = objShell.Namespace(FONTS)

' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...
Set rxTTF = New RegExp
rxTTF.IgnoreCase = True
rxTTF.Pattern = "\.ttf$"

FOR EACH FontFile IN oSource.Items()
    IF rxTTF.Test(FontFile.Path) THEN   
        oWinFonts.CopyHere FontFile.Path
    END IF
NEXT

Ora crea un collegamento sul desktop che è il seguente ...

C:\Windows\System32\runas.exe /user:Administrator /savecred "wscript C:\PortableApps\InstallFonts\InstallFonts.vbs"

Nota che ho usato "Amministratore". L'ho abilitato e gli ho assegnato una password. Suppongo che tu possa usare qualsiasi account amministratore per questo. La prima volta che esegui il collegamento ti verrà richiesta la password dell'amministratore .. ogni volta che funzionerà.

Se non richiede una password, eseguire il collegamento da un prompt cmd, quindi verrà richiesto.

Non posso prometterti quanto sia sicuro come se potessero usarlo per eseguire codice elevato. Tuttavia è una soluzione.


0

Come detto in precedenza da GeneQ, è così che procedi (l'ho provato)

  1. Apri una riga di comando con i privilegi di amministratore
  2. Usa il comando:

per / F "delims =;" % a in ('dir C: \ FontsDir / B / ADHS / S') fa fontview% a

Dove C: \ FontsDir è la directory in cui sono archiviati i file tff. Una volta eseguita la finestra "fontview" verrà aperta tanto quanto il numero di file tff nella directory "FontsDir". Devi solo fare clic sul pulsante "Installa" e il gioco è fatto! i tuoi caratteri sono installati sul tuo sistema

Spero che possa aiutare qualcuno


perché un forcomando così complesso anziché (ad esempio) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale

Il comando mostra anche caratteri nascosti
Sam Doxy,

-1

Non hai elencato la tua versione di Windows, ma presumo che tu stia eseguendo Vista o 7. La copia in quella directory richiede privilegi di amministratore. Prova di nuovo quello che hai fatto, ma questa volta usa un prompt dei comandi elevato.


3
Ha detto che la copia è riuscita. Se i permessi gli impedissero di copiare con successo lì, gli avrebbe detto che la copia non era riuscita, quindi probabilmente questo non è il problema.
nhinkle

-1

Ho trascorso molto tempo a trovare un modo per installare il font senza riavviare. Finalmente ho trovato questo: ClickFont . È una soluzione semplice ed esatta.

ClickFont consente una facile installazione di caratteri TrueType, OpenType e PostScript con solo due clic del mouse, da qualsiasi parte del sistema. Tutto ciò che serve è un clic destro su un carattere o una cartella.

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.