Як встановити шрифт із командного рядка Windows?


37

Чи можливо встановити шрифти з командного рядка в Windows? Якщо так, то яка команда?

Я спробував, copy [fontname].ttf C:\Windows\Fonts\і це сказало, що копіювання завершено, але я не зміг ні знайти згадані шрифти в папці Fonts, ні знайти їх у списку шрифтів будь-якої програми, так що, безумовно, не працювало. (Хоча я був в змозі видалити зазначені шрифти з шрифтів папки згодом)


Відповіді:


31

Це можливо, але для цього потрібно написати сценарій оболонки Windows. Копіювання одного шрифту не встановить: вам також потрібно зареєструвати шрифт, наприклад

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

Крім того, ви можете використовувати наступні рядки коду відповідно до ваших потреб; збережіть його у форматі .vbs та виконайте його.

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

Приклад:

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

Ще одна альтернатива - це встановлення шрифтів "тимчасових", лише для поточного сеансу користувача. Ідея полягає у запуску fontview.exeкожного шрифту, що робить його доступним для інших програм Windows:

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

Повне рішення дивіться тут .


Ви будете так люб'язно розширити свій скрипт на: (1) Автоматично встановити всі *.ttfта *.fonшрифти з поточного каталогу (2) Використовуйте, Const FONTS = &H14&як тут запропоновано ( sevenforums.com/general-discussion/… ). Я не король на VBS :( Дякую заздалегідь.
dma_k

1
objFolderItem.InvokeVerb("Install")не працює на Windows Server 2012 R2
Ентоні Конг

@GeneQ: Шрифт copyі reg addне робить шрифт, перелічений у програмах Windows® 10.
user2284570

16

У Powershell це може бути так просто, як:

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

3
Я змінив би другий рядок наGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
Євгеній Шарапов

2
Зрозуміло, Get-ChildItemце спосіб Powershell, я просто ненавиджу спосіб Powershell (Unix оболонка прихильність тут), і dirце лише псевдонім для цього; і якщо ви хочете рекурсії, то запропоновані вами варіанти - це шлях. Для простого "просто сканування файлів у цій папці", моя версія менш докладна і більш читабельна.
Гасс

5

Подібно до рішення GeneQ, ось версія, яка робить це для всіх .ttf-файлів у каталозі сценарію:

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

Ви щойно врятували мені день :) Мій шрифт Windows за замовчуванням зіпсувався, і це було єдиним способом я можу перевстановити всі шрифти Windows за замовчуванням. Спасибі!!
Рима

ідеально! Я використовував це в vbs, керованому файлом bat для ряду комп'ютерів після ребренду компанії. Він встановлює шрифти, встановлює файли підписів електронної пошти для Outlook та встановлює домашню сторінку веб-переглядача
Reece

3

Ви також можете використовувати утиліту FontReg для встановлення шрифтів з командного рядка.


1
Це не спрацювало для мене в Windows 10 64bit.
djangofan

1
@djangofan: Ви використовували командний рядок підвищеного рівня? Я ще не пробував fontreg в Windows 10, але очікую, що це буде потрібно.
afrazier

Проблема полягала в тому, що я намагався встановити шрифти Mac у своїй системі (у них немає розширень імені файлів). Я отримав файли шрифтів Windows .ttf і все це зараз добре.
djangofan

1

Створіть файл сценарію під назвою InstallFonts.vbs, у моєму випадку я поклав його на C: \ PortableApps \ InstallFonts \ IN нижче, код замінить "SomeUser" на ім'я користувача, якого ви хочете мати змогу встановити шрифти. Потім зробіть відповідну папку «встановити шрифти» на своєму робочому столі.

    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

Тепер створіть ярлик на робочому столі, який виглядає наступним чином ...

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

Зауважте, що я використовував "Адміністратор". Я ввімкнув його і призначив йому пароль. Я думаю, ви могли використовувати для цього будь-який обліковий запис адміністратора. При першому запуску ярлика вам буде запропоновано пароль адміністратора .. щоразу після того, як він буде просто працювати.

Якщо він не запропонує вам ввести пароль, запустіть ярлик з підказки cmd, він повинен підказати вам тоді.

Я не можу вам пообіцяти, наскільки це безпечно, якби вони могли використовувати його для запуску підвищеного коду. Однак це рішення.


0

Як вже було сказано GeneQ, саме так ви продовжуєте (я тестував це)

  1. Відкрийте командний рядок з правами адміністратора
  2. Використовуйте команду:

для / F "delims =;" % a in ('dir C: \ FontsDir / B / ADHS / S') зробіть fontview% a

Де C: \ FontsDir - це каталог, де зберігаються ваші файли tff. Після виконання вікон "fontview" буде відкрито стільки, скільки кількість файлів tff всередині каталогу "FontsDir". Вам потрібно просто натиснути кнопку «Встановити» і ось ви! ваші шрифти встановлені у вашій системі

Сподіваюся, це комусь допоможе


чому така складна forкоманда замість (наприклад) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Але

Команда показує також приховані шрифти
Sam Doxy

-1

Ви не вказали свою версію Windows, але я припускаю, що ви маєте версію Vista або 7. Для копіювання в цей каталог потрібні адміністративні права. Спробуйте те, що ви зробили ще раз, але використовуйте команду Підвищений командний рядок цього разу.


3
Він сказав, що копія вдалася. Якби дозволи не заважали йому успішно копіювати там, це могло б сказати йому, що копія не вдалася, тому, ймовірно, це не проблема.
nhinkle

-1

Я витратив багато часу, щоб знайти спосіб встановлення шрифту без перезавантаження. Нарешті я знайшов це: ClickFont . Це просте і точне рішення.

ClickFont дозволяє легко встановлювати шрифти TrueType, OpenType та PostScript лише двома клацаннями миші з будь-якої точки системи. Все, що потрібно, - це клацання правою кнопкою миші на шрифті або папці.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.