36

Можно ли установить шрифты из командной строки в Windows? Если да, то какая команда?

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

8 ответов8

30

Это возможно, но для этого нужно написать сценарий оболочки 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

Смотрите полное решение здесь.

16

В Powershell это может быть просто:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
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
3

Вы также можете использовать утилиту FontReg для установки шрифтов из командной строки.

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. Используйте команду:

for /F "delims =;" % a in ('dir C:\FontsDir /B / ADHS / S') сделать просмотр шрифта% a

Где C:\FontsDir - это каталог, в котором хранятся ваши tff-файлы. После запуска окна "fontview" будет открыто столько файлов tff внутри каталога "FontsDir". Вы просто должны нажать на кнопку "Установить", и вот вы здесь! ваши шрифты установлены в вашей системе

Надеюсь, это поможет кому-то

-1

Вы не указали свою версию Windows, но я предполагаю, что вы работаете в Vista или 7. Копирование в этот каталог требует административных прав. Попробуйте то, что вы сделали снова, но на этот раз используйте повышенную командную строку.

-1

Я потратил много времени, чтобы найти способ установки шрифта без перезагрузки. Наконец я нашел это: ClickFont. Это простое и точное решение.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .