如何从Windows命令提示符下安装字体?


37

是否可以在Windows的命令提示符下安装字体?如果是,命令是什么?

我尝试了一下copy [fontname].ttf C:\Windows\Fonts\,并说复制已完成,但是我既无法在Fonts文件夹中找到上述字体,也无法在任何程序的字体列表中找到它们,因此肯定无法正常工作。(虽然我能够删除表示,从字体的字体文件夹后)


Answers:


31

有可能,但是您必须编写Windows Shell脚本来执行此操作。单独复制不会安装字体:您还需要注册字体,例如

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上不起作用
Anthony Kong

@GeneQ:copyreg 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) }
EvgeniySharapov 2016年

2
当然,这Get-ChildItem是Powershell的方式,我只是讨厌Powershell的方式(这里dir是Unix shell的情感),而这只是它的别名。如果您要递归,则可以使用提供的选项。对于简单的“仅扫描此文件夹中的文件”,我的版本不那么冗长,更易读。
古斯

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默认字体的唯一方法。谢谢!!
里马2015年

完善!公司更名后,我在由bat文件运行的vb中为许多计算机使用了此文件。它安装字体,安装Outlook的电子邮件签名文件并设置浏览器主页
Reece 2015年

3

您还可以使用FontReg实用程序从命令提示符下安装字体。


1
在Windows 10 64bit上,这对我不起作用。
djangofan

1
@djangofan:您是否在使用提升的命令提示符?我尚未在Windows 10上尝试过fontreg,但是我希望这是必需的。
afrazier

问题是我试图在系统上安装Mac字体(它们没有文件扩展名)。我得到了Windows .ttf字体文件,现在一切都很好。
djangofan,2015年

1

在我的情况下,创建一个名为InstallFonts.vbs的脚本文件,将其放在C:\ PortableApps \ InstallFonts \中。在下面的代码中,将“ 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”窗口将打开与“ FontsDir”目录中的tff文件一样多的窗口。您只需要点击“ Install”按钮,就可以了!您的字体已安装在系统上

希望对别人有帮助


为什么用这样复杂的for命令代替(例如)for %a in (C:\FontsDir\*.*) do fontview "%a"
Ale

该命令还显示隐藏的字体
Sam Doxy

-1

您没有列出Windows版本,但是我假设您运行的是Vista或7。复制到该目录需要管理权限。再次尝试执行操作,但是这次使用“提升的命令提示符”即时消息。


3
他说复制成功。如果有权限阻止他成功复制到那里,那将告诉他复制失败,所以这可能不是问题。
nhinkle

-1

我花了很多时间来找到一种无需重新安装字体的方法。终于我找到了:ClickFont。这是一个简单而精确的解决方案。

ClickFont允许从系统中的任何位置单击两次鼠标即可轻松安装TrueType,OpenType和PostScript字体。只需在字体或文件夹上单击鼠标右键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.