![如何从 Windows 命令提示符安装字体?](https://linux22.com/image/1254310/%E5%A6%82%E4%BD%95%E4%BB%8E%20Windows%20%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E5%AE%89%E8%A3%85%E5%AD%97%E4%BD%93%EF%BC%9F.png)
是否可以从 Windows 上的命令提示符安装字体?如果可以,命令是什么?
我试过了copy [fontname].ttf C:\Windows\Fonts\
,它说复制已完成,但我在 Fonts 文件夹中找不到所述字体,在任何程序的字体列表中也找不到它们,所以这肯定不起作用。(虽然我曾是之后可以从 Fonts 文件夹中删除所述字体)
答案1
这是可能的,但你必须编写 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
查看完整解决方案这里。
答案2
在 Powershell 中这可以简单如下:
$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
答案3
与 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
答案4
创建一个名为 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 提示符运行快捷方式,然后它会提示您。
我无法保证这有多安全,因为他们可能会用它来运行高级代码。但这确实是一个解决方案。