Como instalo uma fonte no prompt de comando do Windows?

37

É possível instalar fontes no prompt de comando no Windows? Se sim, qual é o comando?

Tentei copy [fontname].ttf C:\Windows\Fonts\e disse que a cópia estava concluída, mas não consegui encontrar as fontes mencionadas na pasta Fontes nem na lista de fontes de qualquer programa, de modo que certamente não funcionou. (Embora eu tenha sido capaz de excluir as fontes mencionadas da pasta Fontes posteriormente)

Mussnoon
fonte
Veja também: stackoverflow.com/questions/28687666/…
Jerry Dodge

Respostas:

31

É possível, mas você precisa escrever um script de shell do Windows para fazer isso. Copiar sozinho não instala a fonte: você também precisa registrar a fonte, por exemplo

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

Como alternativa, você pode as seguintes linhas de código para atender às suas necessidades; salve-o como um arquivo .vbs e execute-o.

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

Exemplo:

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

Outra alternativa é instalar fontes "temporárias", apenas para a sessão do usuário atual. A idéia é executar fontview.exepara cada fonte, o que a torna disponível para outros aplicativos do Windows:

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

Veja a solução completa aqui .

GeneQ
fonte
Você vai ser tão amável para estender seu script para: (1) instalar automaticamente todas *.ttfe *.fonfontes do diretório atual (2) Use Const FONTS = &H14&como sugerido aqui ( sevenforums.com/general-discussion/... ). Eu não sou rei em VBS :( Obrigado antecipadamente.
dma_k
1
objFolderItem.InvokeVerb("Install")não funciona no Windows Server 2012 R2
Anthony Kong
@GeneQ: A copye reg addnão faz a fonte listada em programas em Windows® 10.
user2284570
16

No Powershell, isso pode ser tão simples quanto:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
Guss
fonte
3
Eu mudaria segunda linha comGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov
2
Concedido, Get-ChildItemé o caminho do Powershell, eu odeio o caminho do Powershell (shell do Unix afetado aqui), e diré apenas um apelido para isso; e se você quiser recursão, as opções fornecidas são o caminho a percorrer. Para o simples "basta verificar os arquivos nesta pasta", minha versão é menos detalhada e mais legível.
Guss
5

Semelhante à solução do GeneQ, aqui está uma versão para todos os arquivos .ttf no diretório do 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
mivk
fonte
Você acabou de salvar meu dia :) Minha fonte padrão do Windows foi corrompida e essa foi a única maneira de reinstalar todas as fontes padrão do Windows. Obrigado!!
Rima
perfeito! Eu usei isso em um vbs executado por um arquivo bat para vários computadores depois que uma empresa foi remarcada. Ele instala as fontes, instala os arquivos de assinatura de email do Outlook e define a página inicial do navegador
Reece
3

Você também pode usar o utilitário FontReg para instalar fontes em um prompt de comando.

afrazier
fonte
1
Isso não funcionou para mim no Windows 10 de 64 bits.
djangofan
1
@djangofan: Você estava usando um prompt de comando elevado? Ainda não testei o fontreg no Windows 10, mas espero que isso seja necessário.
afrazier
O problema era que eu estava tentando instalar fontes Mac no meu sistema (elas não têm extensões de nome de arquivo). Eu tenho os arquivos de fonte .ttf do Windows e está tudo bem agora.
djangofan
1

Crie um arquivo de script chamado InstallFonts.vbs, no meu caso, coloquei-o em C: \ PortableApps \ InstallFonts \ IN, no código abaixo, substitua "SomeUser" pelo nome de usuário da pessoa que você deseja instalar fontes. Em seguida, crie a pasta "instalar fontes" apropriada na área de trabalho.

    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

Agora crie um atalho na área de trabalho da seguinte maneira ...

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

Observe que eu usei "Administrador". Eu o habilitei e atribuí uma senha. Suponho que você possa usar qualquer conta de administrador para isso. Na primeira vez em que você executar o atalho, será solicitada a senha do administrador. Sempre que ela funcionar.

Se não solicitar uma senha, execute o atalho a partir de um prompt do cmd.

Não posso prometer o quão seguro isso é, como se eles pudessem usá-lo para executar código elevado. No entanto, é uma solução.

Desktop Masters
fonte
0

Como dito anteriormente pelo GeneQ, é assim que você prossegue (eu testei)

  1. Abra uma linha de comando com privilégios de administrador
  2. Use o comando:

para / F "delims =;" % a em ('dir C: \ FontsDir / B / ADHS / S') faz fontview% a

Onde C: \ FontsDir é o diretório em que seus arquivos tff estão armazenados. Uma vez executadas, as janelas "fontview" serão abertas tanto quanto o número de arquivos tff no diretório "FontsDir". Você só precisa clicar no botão "Instalar" e pronto! suas fontes estão instaladas no seu sistema

Espero que ajude alguém

Sam Doxy
fonte
por que um forcomando tão complexo em vez de (por exemplo) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale
Os shows de comando também escondido fontes
Sam Doxy
-1

Você não listou sua versão do Windows, mas presumo que você esteja executando o Vista ou 7. A cópia para esse diretório requer privilégios administrativos. Tente o que você fez novamente, mas use um prompt de comando elevado desta vez.

jsejcksn
fonte
3
Ele disse que a cópia foi bem sucedida. Se as permissões o impedissem de copiar com êxito para lá, teria dito a ele que a cópia falhou, portanto esse provavelmente não é o problema.
nhinkle
-1

Gastei muito tempo para encontrar uma maneira de instalar a fonte sem reiniciar. Finalmente encontrei o seguinte: ClickFont . É uma solução fácil e exata.

O ClickFont permite a instalação fácil de fontes TrueType, OpenType e PostScript com apenas dois cliques do mouse, de qualquer lugar do sistema. Basta clicar com o botão direito do mouse em uma fonte ou pasta.

SelçukDERE
fonte