ฉันจะติดตั้งแบบอักษรจากพรอมต์คำสั่ง Windows ได้อย่างไร


37

เป็นไปได้ไหมที่จะติดตั้งแบบอักษรจากพรอมต์คำสั่งบน Windows? ถ้าใช่คำสั่งคืออะไร?

ฉันพยายามcopy [fontname].ttf C:\Windows\Fonts\แล้วมันบอกว่าการคัดลอกเสร็จสมบูรณ์ แต่ฉันไม่สามารถหาแบบอักษรที่กล่าวไว้ในโฟลเดอร์แบบอักษรหรือค้นหาแบบอักษรในรายการแบบอักษรของโปรแกรมใด ๆ เพื่อให้ใช้งานไม่ได้ (แม้ว่าฉันจะสามารถลบแบบอักษรดังกล่าวออกจากโฟลเดอร์แบบอักษรในภายหลัง)


เกี่ยวข้อง: stackoverflow.com/questions/28687666/…
Jerry Dodge

คำตอบ:


31

เป็นไปได้ แต่คุณต้องเขียนเชลล์เชลล์ของ Windows เพื่อทำเช่นนั้น การคัดลอกเพียงอย่างเดียวจะไม่ติดตั้งแบบอักษร: คุณต้องลงทะเบียนแบบอักษรเช่น

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

หรือคุณสามารถเลือกบรรทัดของรหัสต่อไปนี้เพื่อให้เหมาะกับความต้องการของคุณ บันทึกเป็นไฟล์. vbs จากนั้นเรียกใช้งาน

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

ตัวอย่าง:

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

อีกทางเลือกหนึ่งคือการติดตั้งแบบอักษร "ชั่วคราว" เพียงสำหรับเซสชันผู้ใช้ปัจจุบัน แนวคิดคือการเรียกใช้fontview.exeสำหรับแบบอักษรแต่ละตัวซึ่งทำให้ใช้ได้กับแอปพลิเคชัน Windows อื่น ๆ :

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

ดูโซลูชั่นที่สมบูรณ์ที่นี่


คุณจะกรุณาขยายสคริปต์ของคุณไปที่: (1) ติดตั้งทั้งหมด*.ttfและ*.fonแบบอักษรจากไดเรกทอรีปัจจุบันโดยอัตโนมัติ(2) ใช้Const FONTS = &H14&ตามที่แนะนำที่นี่ ( sevenforums.com/general-discussion/ ...... ) ฉันไม่ใช่ราชาใน VBS :( ขอบคุณล่วงหน้า
dma_k

1
objFolderItem.InvokeVerb("Install")ไม่ทำงานบน Windows Server 2012 R2
Anthony Kong

@GeneQ: copyและreg addไม่ทำให้แบบอักษรที่ระบุไว้ในโปรแกรมในWindows® 10
2284570

16

ใน Powershell สิ่งนี้สามารถทำได้ง่ายเพียง:

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

3
ฉันจะเปลี่ยนบรรทัดที่สองด้วยGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov

2
ได้รับ, Get-ChildItemเป็นวิธี Powershell, ฉันเพิ่งเกลียดวิธี Powershell (Unix shell affectionado ที่นี่), และdirเป็นเพียงนามแฝงสำหรับสิ่งนั้น; และถ้าคุณต้องการการสอบถามซ้ำตัวเลือกที่คุณให้ไว้เป็นวิธีที่จะไป สำหรับง่าย ๆ "เพียงแค่สแกนไฟล์ในโฟลเดอร์นี้" เวอร์ชั่นของฉันจะละเอียดและอ่านง่ายขึ้น
Guss

5

คล้ายกับวิธีแก้ปัญหาของ GeneQ นี่คือเวอร์ชันสำหรับไฟล์. ttf ทั้งหมดในไดเรกทอรีของสคริปต์:

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

คุณเพิ่งบันทึกวันของฉัน :) แบบอักษรเริ่มต้นของ Windows ของฉันเสียหายและนี่เป็นวิธีเดียวที่ฉันสามารถติดตั้งแบบอักษรเริ่มต้นทั้งหมดของ Windows ได้ ขอบคุณ !!
Rima

ที่สมบูรณ์แบบ! ฉันใช้สิ่งนี้ใน vbs ที่ดำเนินการโดยไฟล์ bat สำหรับคอมพิวเตอร์จำนวนหนึ่งหลังจากที่ บริษัท สร้างแบรนด์ใหม่ ติดตั้งแบบอักษรติดตั้งไฟล์ลายเซ็นอีเมลสำหรับ Outlook และตั้งค่าโฮมเพจเบราว์เซอร์
Reece

3

คุณยังสามารถใช้ยูทิลิตี้FontRegเพื่อติดตั้งแบบอักษรจากพรอมต์คำสั่ง


1
สิ่งนี้ไม่ได้ผลสำหรับฉันบน Windows 10 64 บิต
djangofan

1
@djangofan: คุณใช้พรอมต์คำสั่งที่ยกระดับหรือไม่ ฉันยังไม่ได้ลอง fontreg บน Windows 10 แต่ฉันคาดหวังว่าจะต้องทำ
afrazier

ปัญหาคือฉันพยายามติดตั้งแบบอักษร Mac บนระบบของฉัน (พวกเขาไม่มีส่วนขยายชื่อไฟล์) ฉันได้รับไฟล์ฟอนต์ windows .tff แล้วและมันก็ใช้ได้ดี
djangofan

1

สร้างไฟล์สคริปต์ชื่อ InstallFonts.vbs ในกรณีของฉันฉันใส่ไว้ใน C: \ PortableApps \ InstallFonts \ IN รหัสด้านล่างแทนที่ "SomeUser" ด้วยชื่อผู้ใช้ของบุคคลที่คุณต้องการติดตั้งแบบอักษร จากนั้นสร้างโฟลเดอร์ "install Fonts" ที่เหมาะสมบนเดสก์ท็อป

    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

ตอนนี้สร้างทางลัดบนเดสก์ท็อปของพวกเขาที่เป็นดังนี้ ...

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

โปรดทราบว่าฉันใช้ "ผู้ดูแลระบบ" ฉันเปิดใช้งานและกำหนดรหัสผ่าน ฉันคิดว่าคุณสามารถใช้บัญชีผู้ดูแลระบบนี้ได้ ครั้งแรกที่คุณเรียกใช้ทางลัดคุณจะได้รับแจ้งให้ใส่รหัสผ่านของผู้ดูแลระบบ .. ทุกครั้งหลังจากที่มันเพิ่งจะทำงาน

ถ้ามันไม่พร้อมท์ให้คุณใส่รหัสผ่านให้เรียกใช้ทางลัดจาก cmd prompt มันจะถามคุณทันที

ฉันไม่สามารถสัญญากับคุณได้ว่ามันจะปลอดภัยแค่ไหนหากพวกเขาสามารถใช้มันเพื่อรันโค้ดที่ยกระดับได้ อย่างไรก็ตามมันเป็นทางออก


0

ตามที่กล่าวไว้ก่อนหน้านี้โดย GeneQ นี่คือวิธีที่คุณดำเนินการต่อ (ฉันได้ทดสอบแล้ว)

  1. เปิดบรรทัดคำสั่งด้วยสิทธิ์ผู้ดูแลระบบ
  2. ใช้คำสั่ง:

สำหรับ / F "delims =;" % a ใน ('dir C: \ FontsDir / B / ADHS / S') ดูแบบอักษร% a

โดยที่ C: \ FontsDir เป็นไดเรกทอรีที่จัดเก็บไฟล์ tff ของคุณ เมื่อเปิดใช้งานหน้าต่าง "fontview" จะเปิดได้มากเท่ากับจำนวนไฟล์ tff ในไดเรกทอรี "FontsDir" คุณเพียงแค่คลิกที่ปุ่ม "ติดตั้ง" และมีคุณ! แบบอักษรของคุณถูกติดตั้งบนระบบของคุณ

หวังว่ามันจะช่วยใครซักคน


ทำไมเช่นforคำสั่งที่ซับซ้อนแทน (ตัวอย่าง) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale

คำสั่งแสดงแบบอักษรที่ซ่อนอยู่ด้วย
Sam Doxy

-1

คุณไม่ได้แสดงรายการรุ่น Windows ของคุณ แต่ฉันคิดว่าคุณกำลังใช้งาน Vista หรือ 7 การคัดลอกไปยังไดเรกทอรีนั้นต้องการสิทธิ์ระดับผู้ดูแลระบบ ลองสิ่งที่คุณทำอีกครั้ง แต่ใช้พร้อมท์คำสั่งยกระดับในเวลานี้


3
เขาบอกว่าสำเนาสำเร็จ หากสิทธิ์ทำให้เขาไม่สามารถคัดลอกไฟล์ได้สำเร็จก็จะมีการแจ้งให้เขาทราบว่าการคัดลอกล้มเหลวดังนั้นนี่อาจไม่ใช่ปัญหา
nhinkle

-1

ฉันใช้เวลามากมายในการหาวิธีในการติดตั้งแบบอักษรโดยไม่ต้องรีสตาร์ท ในที่สุดผมก็พบนี้: ClickFont มันเป็นทางออกที่ง่ายและแน่นอน

ClickFont ช่วยให้ติดตั้งแบบอักษร TrueType, OpenType และ PostScript ได้อย่างง่ายดายด้วยการคลิกเมาส์เพียงสองครั้งจากที่ใดก็ได้ในระบบ เพียงคลิกขวาที่ตัวอักษรหรือโฟลเดอร์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.