找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7312|回复: 18

[求助] 同时安装多个字体,能不能实现显示第n个字体,共50个字体?

[复制链接]
发表于 2021-5-10 00:43:00 | 显示全部楼层 |阅读模式
本帖最后由 15126222223 于 2021-5-10 14:48 编辑

使用VBS安装字体非常方便,但麻烦的事情是只能安装一个一个文件,不会显示很多个,如“正在安装xxxx字体,第1个字体,共1个字体”,我希望能够实现显示“正在安装xxx字体,第6个字体,共24个字体。这样的效果,求各位大佬帮忙解决一下?

我希望自动安装,但一个一个安装,出现系统已经有的,要点击是否覆盖才行,能不能直接覆盖,不提示。
能否把替换提示改为默认替换就行?

无标题.jpg

本论坛中一个一个安装原代码
  1. Set ofso = CreateObject("Scripting.FileSystemObject")

  2. SourceFolder = ofso.GetParentFolderName(Wscript.ScriptFullName)


  3. Const FONTS = &H14&


  4. Set objShell  = CreateObject("Shell.Application")

  5. Set oSource   = objShell.Namespace(SourceFolder)

  6. Set oWinFonts = objShell.Namespace(FONTS)


  7. ' Lame VBscript needs 4 f*ing lines instead of "if (/\.ttf$/i) " ...

  8. Set rxTTF = New RegExp

  9. rxTTF.IgnoreCase = True

  10. rxTTF.Pattern = "\.ttf[        DISCUZ_CODE_0        ]quot;


  11. FOR EACH FontFile IN oSource.Items()

  12.     IF rxTTF.Test(FontFile.Path) THEN
  13.    
  14.         oWinFonts.CopyHere FontFile.Path

  15.     END IF

  16. NEXT
复制代码

发表于 2021-5-10 07:05:14 | 显示全部楼层
不要用 For Each;
直接把所有路径用分隔符(可能是;或,) 连接在一起.试试吧.
回复

使用道具 举报

 楼主| 发表于 2021-5-10 07:59:41 | 显示全部楼层
常用的方法有逗号分隔、分号分隔、回车换行分隔、放到数组,试过了这几种都不行。
回复

使用道具 举报

发表于 2021-5-10 10:34:23 | 显示全部楼层
字体安装不是直接复制到fonts目录就行了么?

点评

现在win10复制安装不成功。  详情 回复 发表于 2021-5-10 12:17
回复

使用道具 举报

 楼主| 发表于 2021-5-10 12:17:29 | 显示全部楼层
邪恶海盗 发表于 2021-5-10 10:34
字体安装不是直接复制到fonts目录就行了么?

现在win10复制安装不成功。
回复

使用道具 举报

 楼主| 发表于 2021-5-10 14:31:50 | 显示全部楼层

有部分系统复制进去,不识别,重启不行。

点评

还有这事???  详情 回复 发表于 2021-5-10 14:40
回复

使用道具 举报

发表于 2021-5-10 14:40:29 | 显示全部楼层
15126222223 发表于 2021-5-10 14:31
有部分系统复制进去,不识别,重启不行。

还有这事???
回复

使用道具 举报

发表于 2021-5-10 14:55:05 来自手机 | 显示全部楼层
edison_2008 发表于 2021-5-10 14:00
亲测,可以。

楼主指的可能是非手动复制,命令或者程序复制可能就不会安装

点评

是的,第一种,用命令写进去的。第二种用winrar软件打包成exe,运行路径就是字体安装路径,两种会出现问题,字体无效。  详情 回复 发表于 2021-5-10 15:37
回复

使用道具 举报

 楼主| 发表于 2021-5-10 15:37:59 | 显示全部楼层
nttwqz 发表于 2021-5-10 14:55
楼主指的可能是非手动复制,命令或者程序复制可能就不会安装

是的,第一种,用命令写进去的。第二种用winrar软件打包成exe,运行路径就是字体安装路径,两种会出现问题,字体无效。

点评

本坛有个fontreg 复制完成后运行一下就好  详情 回复 发表于 2021-5-10 18:32
回复

使用道具 举报

发表于 2021-5-10 18:32:41 来自手机 | 显示全部楼层
15126222223 发表于 2021-5-10 15:37
是的,第一种,用命令写进去的。第二种用winrar软件打包成exe,运行路径就是字体安装路径,两种会出现问 ...

本坛有个fontreg
复制完成后运行一下就好
回复

使用道具 举报

发表于 2021-5-12 19:26:13 | 显示全部楼层
把系统里的这个字体先删掉

点评

两种方法,一种就是判断是否安装,一种就是安装前删除。 我选择第一种。  详情 回复 发表于 2021-5-13 08:11
回复

使用道具 举报

 楼主| 发表于 2021-5-13 08:11:32 | 显示全部楼层
dos时代菜鸟 发表于 2021-5-12 19:26
把系统里的这个字体先删掉

两种方法,一种就是判断是否安装,一种就是安装前删除。
我选择第一种。
回复

使用道具 举报

发表于 2025-7-9 17:11:21 | 显示全部楼层
一个个来也快
回复

使用道具 举报

发表于 2026-4-9 19:43:12 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-4-9 23:00:30 | 显示全部楼层
本帖最后由 redyear2026 于 2026-4-9 23:01 编辑

   修改一楼代码如下,取消原有的进度显示(改用命令行显示,如楼主期望格式),取消覆盖确认提示。
   代码存为 test.vbs,与要安装的 *.ttf 字体文件同目录,命令行运行 test.vbs 的用法格式须为 cscript test.vbs,不要双击运行 test.vbs 以免出现弹窗显示等待。

  1. Set ofso=CreateObject("Scripting.FileSystemObject")
  2. SourceFolder=ofso.GetParentFolderName(Wscript.ScriptFullName)
  3. Const FONTS=&H14&
  4. Set objShell=CreateObject("Shell.Application")
  5. Set oSource=objShell.Namespace(SourceFolder)
  6. Set oWinFonts=objShell.Namespace(FONTS)
  7. n=0 : m=0
  8. FOR EACH FontFile IN oSource.Items()
  9.     IF Lcase(ofso.GetExtensionName(FontFile))="ttf" THEN
  10.         n=n+1
  11.     END IF
  12. NEXT
  13. FOR EACH FontFile IN oSource.Items()
  14.     IF Lcase(ofso.GetExtensionName(FontFile))="ttf" THEN
  15.         m=m+1
  16.         wsh.echo "正在安装 " & FontFile & ",第" & m  & "个字体,共" & n & "个字体"
  17.         oWinFonts.CopyHere FontFile.Path, 20
  18.     END IF
  19. NEXT
  20. WSH.Quit
复制代码

点评

非常感谢楼主,我测试一下。  详情 回复 发表于 2026-4-10 00:12
回复

使用道具 举报

 楼主| 发表于 2026-4-10 00:12:54 | 显示全部楼层
redyear2026 发表于 2026-4-9 23:00
修改一楼代码如下,取消原有的进度显示(改用命令行显示,如楼主期望格式),取消覆盖确认提示。
   代 ...

非常感谢楼主,我测试一下。
回复

使用道具 举报

发表于 2026-4-10 00:13:46 | 显示全部楼层
本帖最后由 redyear2026 于 2026-4-10 20:03 编辑

   如果要保留原有进度框,可采用 copyHere 方法一次性安装指定目录中的全部字体文件,其全量进度框显示也许会如你所愿,代码如下,存为 test.vbs,运行方法是直接将被安装的字体文件目录拖拽给 test.vbs 即可。
   注意:
   一。test.vbs 不要放在被安装的字体文件目录中
   二。被安装的字体文件目录只能存放字体文件(如 *.ttf, *.ttc)

  1. Set v=WSH.arguments
  2. If v.count = 0 Then WSH.Quit
  3. SourceFolder=v(0)
  4. Const FONTS=&H14&
  5. Set objShell=CreateObject("Shell.Application")
  6. Set WinFonts=objShell.Namespace(FONTS)
  7. WinFonts.CopyHere objShell.Namespace(SourceFolder).Items,16
  8. WSH.Quit
复制代码
回复

使用道具 举报

发表于 2026-4-10 09:09:18 | 显示全部楼层
ctrl+A所有字体,右键菜单安装,完事
回复

使用道具 举报

发表于 2026-4-10 12:52:00 | 显示全部楼层
本帖最后由 redyear2026 于 2026-4-10 20:13 编辑

   15,17楼代码只是简单给系统内置的 copyhere 字体安装方法加持了启动参数 16(取消覆盖确认框),20(取消覆盖确认框+进度框),但在 win11 高版系统经实测均无效。
   用17楼代码或用16楼手动全选+右键安装方法(即系统内置方法)会有全量进度框显示,如弹窗须确认覆盖,只须首次回复即可 - 【推荐采用
   坚持用脚本安装且不调用系统安装方法 copyhere,只能尝试 '强行复制字体文件+强行注册字体文件+刷新字体缓存' 的方法了。
   值得注意的是,用系统内置的右键字体安装方法可以周全管理维护从复制/替换/注册/清理缓存等所有环节,尤其是还要细分字体文件的内部名称(即字形名),如粗细斜体等字体特征(可被 word, photoshop 和网页等识别应用),而只用 vbs 代码不能直接处理,甚至用管理员身份都很难删除系统字符目录中的内置字体文件。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-6-7 03:02

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表