批处理方式(以管理员身份运行)
脚本结构
install_fonts.bat
fonts\
├── 思源黑体-Regular.ttf
└── JetBrainsMono-Regular.ttf
脚本内容
@echo off
setlocal enabledelayedexpansion
:: 设置字体目录(可根据实际路径修改)
set "fontDir=%~dp0fonts"
:: 检查字体目录是否存在
if not exist "%fontDir%" (
echo [错误] 找不到字体目录: %fontDir%
exit /b 1
)
:: 安装字体
for %%F in ("%fontDir%\*.ttf" "%fontDir%\*.otf" "%fontDir%\*.fon") do (
echo 正在安装字体: %%~nxF
copy /Y "%%F" "%WINDIR%\Fonts" >nul
call :RegisterFont "%%~nxF"
)
echo.
echo [完成] 所有字体已复制并注册。
pause
exit /b
:RegisterFont
REM 参数:字体文件名
setlocal
set "fontFile=%~1"
set "fontName=%~n1"
:: 判断扩展名
set "ext=%fontFile:~-4%"
if /I "%ext%"==".ttf" (
set "fontRegName=%fontName% (TrueType)"
) else if /I "%ext%"==".otf" (
set "fontRegName=%fontName% (OpenType)"
) else (
set "fontRegName=%fontName%"
)
:: 写入注册表
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "!fontRegName!" /t REG_SZ /d "!fontFile!" /f >nul
endlocal
exit /b
Powershell方式
目录结构
install_fonts.ps1
fonts\
├── LXGWWenKai-Regular.ttf
└── JetBrainsMono-Regular.ttf
脚本内容
# PowerShell 脚本:安装当前目录下 fonts 文件夹内所有字体
$FontSource = "$PSScriptRoot\fonts"
$FontDest = "$env:WINDIR\Fonts"
$RegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
# 获取所有字体文件
Get-ChildItem -Path $FontSource -Include *.ttf, *.otf, *.fon -Recurse | ForEach-Object {
$fontFile = $_.Name
$fontFullPath = $_.FullName
$fontName = [System.IO.Path]::GetFileNameWithoutExtension($fontFile)
$fontType = $_.Extension.ToLower()
# 构造注册表显示名
switch ($fontType) {
".ttf" { $regName = "$fontName (TrueType)" }
".otf" { $regName = "$fontName (OpenType)" }
".fon" { $regName = "$fontName" }
default { return }
}
# 复制字体文件
Write-Host "安装字体: $fontFile"
Copy-Item -Path $fontFullPath -Destination $FontDest -Force
# 写入注册表
New-ItemProperty -Path $RegistryPath -Name $regName -Value $fontFile -PropertyType String -Force | Out-Null
}
Write-Host "`n[完成] 所有字体已静默安装。"
运行方式
Set-ExecutionPolicy Bypass -Scope Process -Force
.\install_fonts.ps1
使用批处理运行Powershell脚本
@echo off
:: 批处理文件路径:install_fonts.bat
:: 运行 install_fonts.ps1(位于当前目录)
:: 判断是否以管理员身份运行
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 当前脚本未以管理员权限运行,请以管理员身份重新打开此文件。
pause
exit /b
)
:: 设置执行策略并运行 PowerShell 脚本
powershell -ExecutionPolicy Bypass -NoProfile -NoLogo -File "%~dp0install_fonts.ps1"
echo.
echo [完成] PowerShell 脚本已执行。
pause