批处理方式(以管理员身份运行)

脚本结构

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注