Làm cách nào để cài đặt phông chữ từ dấu nhắc lệnh của Windows?


37

Có thể cài đặt phông chữ từ dấu nhắc lệnh trên Windows không? Nếu có, lệnh là gì?

Tôi đã thử copy [fontname].ttf C:\Windows\Fonts\và nó nói rằng việc sao chép đã hoàn tất, nhưng tôi không thể tìm thấy các phông chữ đã nói trong thư mục Phông chữ cũng như không tìm thấy chúng trong danh sách phông chữ của bất kỳ chương trình nào để chắc chắn không hoạt động. (Mặc dù tôi đã có thể xóa các phông chữ đã nói khỏi thư mục Phông chữ sau đó)


Câu trả lời:


31

Có thể nhưng bạn phải viết một kịch bản shell Windows để làm điều đó. Sao chép một mình sẽ không cài đặt phông chữ: bạn cũng cần đăng ký phông chữ, vd

copy "FontName.ttf" "%WINDIR%\Fonts"
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" /v "FontName (TrueType)" /t REG_SZ /d FontName.ttf /f

Ngoài ra, bạn có thể các dòng mã sau đây cho phù hợp với nhu cầu của bạn; lưu nó dưới dạng tệp .vbs và sau đó thực thi nó.

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("<Folder or Share Location>")
Set objFolderItem = objFolder.ParseName("<TTF File Name>")
objFolderItem.InvokeVerb("Install")

Thí dụ:

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Windows\Font")
Set objFolderItem = objFolder.ParseName("Myriad Pro.ttf")
objFolderItem.InvokeVerb("Install")

Tuy nhiên, một cách khác là cài đặt phông chữ "tạm thời", chỉ dành cho phiên người dùng hiện tại. Ý tưởng là chạy fontview.execho từng phông chữ, làm cho nó có sẵn cho các ứng dụng Windows khác:

for /F "delims=;" %%a in ('dir C:\ExtraFonts /B /A-D-H-S /S') do fontview %%a

Xem giải pháp hoàn chỉnh tại đây .


Bạn sẽ thật tử tế khi mở rộng tập lệnh của mình thành: (1) Tự động cài đặt tất cả *.ttf*.fonphông chữ từ thư mục hiện tại (2) Sử dụng Const FONTS = &H14&như được đề xuất tại đây ( sevenforums.com/general-discussion/ .) Tôi không phải là vua trên VBS :( Cảm ơn trước.
dma_k

1
objFolderItem.InvokeVerb("Install")không hoạt động trên Windows Server 2012 R2
Anthony Kong

@GeneQ: Việc copyreg addkhông làm cho phông chữ được liệt kê trong các chương trình trong Windows® 10.
user2284570

16

Trong Powershell, điều này có thể đơn giản như:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }

3
Tôi sẽ thay đổi dòng thứ hai vớiGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov 7/12/2016

2
Cấp, Get-ChildItemlà cách Powershell, tôi chỉ ghét cách Powershell (tình cảm vỏ Unix ở đây), và dirchỉ là bí danh cho điều đó; và nếu bạn muốn đệ quy, thì các tùy chọn bạn cung cấp là cách để đi. Đối với đơn giản "chỉ cần quét các tệp trong thư mục này", phiên bản của tôi ít dài dòng hơn và dễ đọc hơn.
Guss

5

Tương tự như giải pháp của GeneQ, đây là phiên bản thực hiện cho tất cả các tệp .ttf trong thư mục của tập lệnh:

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

Bạn vừa lưu ngày của tôi :) Phông chữ Windows mặc định của tôi bị hỏng và đây là cách duy nhất tôi có thể cài đặt lại tất cả các phông chữ Mặc định của Windows. Cảm ơn!!
Rima

hoàn hảo! Tôi đã sử dụng điều này trong một vbs được chạy bởi một tập tin bat cho một số máy tính sau khi một công ty tái thương hiệu. Nó cài đặt các phông chữ, cài đặt các tệp chữ ký email cho Outlook và đặt trang chủ trình duyệt
Reece

3

Bạn cũng có thể sử dụng tiện ích FontReg để cài đặt phông chữ từ dấu nhắc lệnh.


1
Điều này không làm việc cho tôi trên Windows 10 64 bit.
djangofan

1
@djangofan: Bạn có đang sử dụng dấu nhắc lệnh nâng cao không? Tôi chưa thử fontreg trên Windows 10, nhưng tôi hy vọng điều đó là bắt buộc.
afrazier

Vấn đề là tôi đã cố cài đặt phông chữ Mac trên hệ thống của mình (chúng không có phần mở rộng tên tệp). Tôi đã nhận được các tập tin phông chữ .ttf và tất cả đều tốt.
djangofan

1

Tạo một tập lệnh có tên InstallFonts.vbs trong trường hợp của tôi, tôi đặt nó vào C: \ PortableApps \ InstallFonts \ IN đoạn mã dưới đây thay thế "Một số người dùng" bằng tên người dùng của người bạn muốn có thể cài đặt phông chữ. Sau đó tạo thư mục "cài đặt Phông chữ" phù hợp trên màn hình của họ.

    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

Bây giờ hãy tạo một lối tắt trên màn hình của họ như sau ...

C:\Windows\System32\runas.exe /user:Administrator /savecred "wscript C:\PortableApps\InstallFonts\InstallFonts.vbs"

Lưu ý rằng tôi đã sử dụng "Quản trị viên". Tôi kích hoạt nó và gán cho nó một mật khẩu. Tôi cho rằng bạn có thể sử dụng bất kỳ tài khoản quản trị viên nào cho việc này. Lần đầu tiên bạn chạy phím tắt, bạn sẽ được nhắc nhập mật khẩu quản trị viên .. mỗi lần sau nó sẽ hoạt động.

Nếu nó không nhắc bạn nhập mật khẩu, hãy chạy phím tắt từ dấu nhắc cmd, nó sẽ nhắc bạn sau đó.

Tôi không thể hứa với bạn mức độ an toàn này như thế nào nếu họ có thể sử dụng nó để chạy mã nâng cao. Tuy nhiên đó là một giải pháp.


0

Như đã nói trước đó bởi GeneQ, đây là cách bạn tiến hành (Tôi đã thử nghiệm nó)

  1. Mở một dòng lệnh với đặc quyền quản trị viên
  2. Sử dụng lệnh:

cho / F "delims =;" % a in ('dir C: \ FontsDir / B / ADHS / S') làm fontview% a

Trong đó C: \ FontsDir là thư mục lưu trữ các tệp tff của bạn. Sau khi thực hiện, các cửa sổ "fontview" sẽ được mở bằng số lượng tệp tff trong thư mục "FontsDir". Bạn chỉ cần nhấp vào nút "Cài đặt" và bạn đang ở đó! phông chữ của bạn được cài đặt trên hệ thống của bạn

Hy vọng nó sẽ giúp được ai đó


Tại sao một forlệnh phức tạp như vậy thay vì (ví dụ) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale

Lệnh cũng hiển thị các phông chữ ẩn
Sam Doxy

-1

Bạn đã không liệt kê phiên bản Windows của mình, nhưng tôi cho rằng bạn đang chạy Vista hoặc 7. Sao chép vào thư mục đó yêu cầu quyền quản trị. Hãy thử những gì bạn đã làm một lần nữa, nhưng sử dụng Lệnh nâng cao nhắc nhở lần này.


3
Ông nói rằng bản sao đã thành công. Nếu quyền hạn ngăn anh ta sao chép thành công ở đó, điều đó sẽ cho anh ta biết rằng bản sao thất bại, vì vậy đây có lẽ không phải là vấn đề.
nhinkle

-1

Tôi đã dành rất nhiều thời gian để tìm cách cài đặt phông chữ mà không cần khởi động lại. Cuối cùng tôi đã tìm thấy điều này: ClickFont . Đó là một giải pháp dễ dàng và chính xác.

ClickFont cho phép dễ dàng cài đặt phông chữ TrueType, OpenType và PostScript chỉ với hai lần nhấp chuột, từ bất kỳ đâu trong hệ thống. Tất cả chỉ cần nhấp chuột phải vào phông chữ hoặc thư mục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.