Jak zainstalować czcionkę z wiersza polecenia systemu Windows?

37

Czy w systemie Windows można zainstalować czcionki z wiersza polecenia? Jeśli tak, jakie jest polecenie?

Próbowałem copy [fontname].ttf C:\Windows\Fonts\i powiedziałem, że kopiowanie zostało zakończone, ale nie mogłem znaleźć tych czcionek w folderze Fonts ani znaleźć ich na liście czcionek żadnego programu, więc na pewno nie zadziałało. (Mimo, że był w stanie usunąć wspomniany czcionek z folderu Fonts później)

Poranek
źródło

Odpowiedzi:

31

Jest to możliwe, ale aby to zrobić, musisz napisać skrypt powłoki systemu Windows. Samo kopiowanie nie spowoduje zainstalowania czcionki: musisz także zarejestrować czcionkę, np

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

Alternatywnie możesz wykonać następujące wiersze kodu w zależności od potrzeb; zapisz go jako plik .vbs, a następnie uruchom.

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

Przykład:

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

Jeszcze inną alternatywą jest instalowanie czcionek „tymczasowych”, tylko dla bieżącej sesji użytkownika. Chodzi o to, aby uruchamiać fontview.exekażdą czcionkę, co czyni ją dostępną dla innych aplikacji Windows:

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

Zobacz kompletne rozwiązanie tutaj .

GeneQ
źródło
Będziesz tak miły przedłużyć swój skrypt do: (1) automatycznie zainstalować *.ttfi *.fonczcionki z bieżącego katalogu (2) Użyj Const FONTS = &H14&jak sugeruje tutaj ( sevenforums.com/general-discussion/... ). Nie jestem królem na VBS :( Z góry dziękuję.
dma_k
1
objFolderItem.InvokeVerb("Install")nie działa w systemie Windows Server 2012 R2
Anthony Kong
@GeneQ: Czcionka copyi reg addnie czyni czcionki wymienionej w programach w
systemie
16

W Powershell może to być tak proste, jak:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
Guss
źródło
3
Get-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
Zmieniłbym
2
To prawda, Get-ChildItemjest to sposób Powershell, po prostu nienawidzę sposobu Powershell (tutaj przywiązanie do powłoki Unix) i dirjest to po prostu pseudonim; a jeśli chcesz rekurencji, możesz wybrać opcje, które podałeś. W przypadku prostego „wystarczy zeskanować pliki w tym folderze” moja wersja jest mniej szczegółowa i bardziej czytelna.
Guss,
5

Podobnie do rozwiązania GeneQ, tutaj jest wersja robiąca to dla wszystkich plików .ttf w katalogu skryptu:

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
źródło
Właśnie zapisałeś mój dzień :) Moja domyślna czcionka Windows uległa uszkodzeniu i to był jedyny sposób, w jaki mogłem ponownie zainstalować wszystkie domyślne czcionki Windows. Dzięki!!
Rima,
doskonały! Użyłem tego w VBS uruchomionym przez plik nietoperza dla wielu komputerów po zmianie marki. Instaluje czcionki, instaluje pliki sygnatur e-mail dla programu Outlook i ustawia stronę główną przeglądarki
Reece
3

Możesz także użyć narzędzia FontReg , aby zainstalować czcionki z wiersza polecenia.

afrazier
źródło
1
To nie działało dla mnie na Windows 10 64bit.
djangofan
1
@djangofan: Czy korzystałeś z wiersza polecenia z podwyższonym poziomem uprawnień? Nie próbowałem jeszcze fontreg na Windows 10, ale spodziewam się, że będzie to wymagane.
afrazier
Problem polegał na tym, że próbowałem zainstalować czcionki Mac w moim systemie (nie mają rozszerzeń nazw plików). Mam pliki czcionek Windows .ttf i teraz wszystko jest w porządku.
djangofan
1

Utwórz plik skryptu o nazwie InstallFonts.vbs w moim przypadku umieszczam go w C: \ PortableApps \ InstallFonts \ IN poniższy kod zastępuje „SomeUser” nazwą użytkownika osoby, dla której chcesz zainstalować czcionki. Następnie utwórz odpowiedni folder „zainstaluj czcionki” na pulpicie.

    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

Teraz utwórz skrót na pulpicie w następujący sposób ...

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

Pamiętaj, że użyłem „Administratora”. Włączyłem i przypisałem hasło. Przypuszczam, że możesz do tego użyć dowolnego konta administratora. Przy pierwszym uruchomieniu skrótu zostaniesz poproszony o hasło administratora. Za każdym razem, gdy zadziała.

Jeśli nie wyświetli się monit o podanie hasła, uruchom skrót z wiersza polecenia cmd, a następnie monit.

Nie mogę obiecać, że jest to bezpieczne, tak jakby mogli go użyć do uruchomienia podwyższonego kodu. Jest to jednak rozwiązanie.

Desktop Masters
źródło
0

Jak powiedział wcześniej GeneQ, w ten sposób postępujesz (przetestowałem to)

  1. Otwórz wiersz poleceń z uprawnieniami administratora
  2. Użyj polecenia:

dla / F "delims =;" % a in ('reż C: \ FontsDir / B / ADHS / S') wykonaj podgląd czcionek% a

Gdzie C: \ FontsDir to katalog, w którym przechowywane są pliki tff. Po uruchomieniu okna „fontview” zostaną otwarte tyle samo ile plików tff w katalogu „FontsDir”. Musisz tylko kliknąć przycisk „Zainstaluj” i gotowe! twoje czcionki są zainstalowane w twoim systemie

Mam nadzieję, że to komuś pomoże

Sam Doxy
źródło
dlaczego tak złożone forpolecenie zamiast (na przykład) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale
Polecenie pokazuje także ukryte czcionki
Sam Doxy
-1

Nie wymieniono wersji systemu Windows, ale zakładam, że używasz systemu Vista lub 7. Kopiowanie do tego katalogu wymaga uprawnień administratora. Spróbuj tego, co zrobiłeś ponownie, ale tym razem skorzystaj z wiersza polecenia z podwyższonym poziomem uprawnień.

jsejcksn
źródło
3
Powiedział, że kopia się powiodła. Gdyby uprawnienia uniemożliwiały mu kopiowanie tam, powiedziałoby mu, że kopiowanie nie powiodło się, więc prawdopodobnie nie jest to problem.
nhinkle
-1

Spędziłem dużo czasu, aby znaleźć sposób na zainstalowanie czcionki bez ponownego uruchamiania. Wreszcie znalazłem to: ClickFont . To łatwe i dokładne rozwiązanie.

ClickFont umożliwia łatwą instalację czcionek TrueType, OpenType i PostScript za pomocą zaledwie dwóch kliknięć myszą, z dowolnego miejsca w systemie. Wystarczy kliknąć czcionkę lub folder prawym przyciskiem myszy.

SelçukDERE
źródło