本帖最后由 小白龙 于 2023-5-29 18:56 编辑
回复 2# idwma
没有, 我在CMD下, 用 dir *mn* 能看到拷贝的文件在Font文件夹里面了,
最后那条命令的意思是,既然已经拷贝到Font文件夹了, 那原字体文件就没什么用了, 就把它删除, 但是死活执行不成功, 字体也没有安装上, 在别的软件下找不到安装的字体, 真是怪了- <# :
- cls&echo off&cd /d "%~dp0"&mode con lines=5000&rem bat保存为ANSI/GB2312编码
- set "current=%cd%"
- set "nm=%~n0.bat"
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
- pause
- exit
- #>
-
- # 定义字体文件路径
- $fontFilePath = "$env:current\A.ttf"
- $fontFilePath
-
- #获取字体名
- Add-Type -AssemblyName System.Drawing
- $fontCollection = New-Object System.Drawing.Text.PrivateFontCollection
- $fontCollection.AddFontFile($fontFilePath)
- $fontName = $fontCollection.Families[0].Name
- $fontName
-
- # 检查系统中是否已安装指定字体
- $fontInstalled = $false
- $installedFontCollection = New-Object System.Drawing.Text.InstalledFontCollection
- $installedFontFamilies = $installedFontCollection.Families
- foreach ($fontFamily in $installedFontFamilies)
- {
- if ($fontFamily.Name -eq $fontName)
- {
- $fontInstalled = $true
- break
- }
- }
- $fontInstalled
-
- # 如果未安装该字体,则添加到系统字体表中
- if (!$fontInstalled)
- {
- # 复制字体文件到系统 Font 目录
- $destinationFolderPath = "C:\Windows\Fonts"
- Copy-Item -Path $fontFilePath -Destination $destinationFolderPath -Force
-
- # 将字体文件注册到系统字体表中
- Add-Type -TypeDefinition @'
- using System;
- using System.Runtime.InteropServices;
-
- public static class FontInstaller
- {
- [DllImport("gdi32.dll")]
- private static extern int AddFontResource(string lpFileName);
-
- public static int Install(string fontFilePath)
- {
- return AddFontResource(fontFilePath);
- }
- }
- '@
- [FontInstaller]::Install("C:\Windows\Fonts\A.ttf")
-
- #删除字体
- del $fontFilePath -Force
- }
复制代码
|