Comment installer une police à partir de l'invite de commande Windows?

37

Est-il possible d'installer des polices à partir de l'invite de commande sous Windows? Si oui, quelle est la commande?

J'ai essayé copy [fontname].ttf C:\Windows\Fonts\et il était indiqué que la copie était terminée, mais je ne pouvais ni trouver les polices en question dans le dossier Polices, ni dans la liste des polices de tout programme, ce qui ne fonctionnait certainement pas. (Même si je suis en mesure de supprimer les polices dit des polices dossier par la suite)

Mussnoon
la source

Réponses:

31

C'est possible, mais vous devez écrire un script shell Windows pour le faire. La copie seule n’installe pas la police: vous devez également enregistrer la police, par exemple

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

Vous pouvez également utiliser les lignes de code suivantes pour répondre à vos besoins. enregistrez-le en tant que fichier .vbs, puis exécutez-le.

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

Exemple:

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

Une autre alternative consiste à installer des polices "temporaires", uniquement pour la session de l'utilisateur en cours. L'idée est de fonctionner fontview.exepour chaque police, ce qui la rend disponible pour d'autres applications Windows:

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

Voir la solution complète ici .

GeneQ
la source
Voulez-vous avoir la gentillesse d'étendre votre script pour: (1) Installer automatiquement tous les polices *.ttfet les *.fonpolices du répertoire actuel (2) Utilisez Const FONTS = &H14&comme suggéré ici ( sevenforums.com/general-discussion/… ). Je ne suis pas roi sur VBS :( Merci d'avance.
dma_k
1
objFolderItem.InvokeVerb("Install")ne fonctionne pas sur Windows Server 2012 R2
Anthony Kong
@GeneQ: Le copyet reg addne fait pas fait la police dans la liste des programmes sous Windows ® 10.
user2284570
16

Dans Powershell, cela peut être aussi simple que:

$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
Guss
la source
3
Je voudrais changer de deuxième ligne avecGet-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
EvgeniySharapov
2
Certes, Get-ChildItemc'est la manière de Powershell, je déteste juste la manière de Powershell (Unix shell affectado ici), et ce dirn'est qu'un alias pour cela; et si vous voulez la récursion, les options que vous avez fournies sont la voie à suivre. Pour le simple "balayer simplement les fichiers de ce dossier", ma version est moins détaillée et plus lisible.
Guss
5

Semblable à la solution de GeneQ, voici une version qui le fait pour tous les fichiers .ttf du répertoire du script:

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
mivk
la source
Vous venez de sauver ma journée :) Ma police Windows par défaut a été corrompue et c’était le seul moyen de réinstaller toutes les polices Windows par défaut. Merci!!
Rima
parfait! Je l'ai utilisé dans un fichier vbs géré par un fichier chauve-souris pour plusieurs ordinateurs après le changement de marque de l'entreprise. Il installe les polices, installe les fichiers de signature de courrier électronique pour Outlook et définit la page d'accueil du navigateur
Reece
3

Vous pouvez également utiliser l' utilitaire FontReg pour installer les polices à partir d'une invite de commande.

afrazier
la source
1
Cela ne fonctionnait pas pour moi sur Windows 10 64 bits.
djangofan
1
@djangofan: Utilisiez-vous une invite de commande élevée? Je n'ai pas encore essayé fontreg sur Windows 10, mais je m'attendrais à ce que cela soit nécessaire.
afrazier
Le problème était que j'essayais d'installer des polices Mac sur mon système (elles n'ont pas d'extensions de nom de fichier). J'ai les fichiers de polices Windows .ttf et tout va bien maintenant.
djangofan
1

Créez un fichier script appelé InstallFonts.vbs. Dans mon cas, je le mets dans C: \ PortableApps \ InstallFonts \ IN. Le code ci-dessous remplace "SomeUser" par le nom d'utilisateur de la personne avec laquelle vous voulez installer les polices. Ensuite, créez le dossier "Installer les polices" approprié sur leur bureau.

    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

Maintenant, créez un raccourci sur leur bureau comme suit ...

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

Notez que j'ai utilisé "Administrateur". Je l'ai activé et lui ai attribué un mot de passe. Je suppose que vous pourriez utiliser n'importe quel compte d'administrateur pour cela. La première fois que vous exécutez le raccourci, le mot de passe administrateur vous sera demandé .. chaque fois que cela fonctionnera.

S'il ne vous invite pas à entrer un mot de passe, exécutez le raccourci à partir d'une invite de commande, il devrait vous le demander ensuite.

Je ne peux pas vous promettre à quel point c'est sécurisé, car ils pourraient l'utiliser pour exécuter du code élevé. Cependant c'est une solution.

Maîtres de bureau
la source
0

Comme mentionné précédemment par GeneQ, voici comment procéder (je l'ai testé)

  1. Ouvrir une ligne de commande avec des privilèges d'administrateur
  2. Utilisez la commande:

pour / F "delims =;" % a in ('dir C: \ FontsDir / B / ADHS / S') font fontview% a

Où C: \ FontsDir est le répertoire où sont stockés vos fichiers tff. Une fois "fontview" exécuté, les fenêtres s'ouvriront autant que le nombre de fichiers tff contenus dans le répertoire "FontsDir". Il vous suffit de cliquer sur le bouton "Installer" et vous y êtes! vos polices sont installées sur votre système

J'espère que ça aiderait quelqu'un

Sam Doxy
la source
pourquoi une forcommande aussi complexe au lieu de (par exemple) for %a in (C:\FontsDir\*.*) do fontview "%a"?
Ale
La commande affiche également les polices masquées
Sam Doxy
-1

Vous n'avez pas répertorié votre version de Windows, mais je suppose que vous utilisez Vista ou 7. La copie dans ce répertoire nécessite des privilèges d'administrateur. Essayez de nouveau ce que vous avez fait, mais utilisez cette fois un instad d’invite de commande surélevé .

jsejcksn
la source
3
Il a dit que la copie avait réussi. Si les autorisations l'empêchaient de copier avec succès là-bas, cela lui aurait alors dit que la copie avait échoué. Ce n'est donc probablement pas le problème.
nhinkle
-1

J'ai passé beaucoup de temps à trouver un moyen d'installer des polices sans redémarrage. Enfin j'ai trouvé ceci: ClickFont . C'est une solution facile et exacte.

ClickFont permet une installation facile des polices TrueType, OpenType et PostScript en seulement deux clics de souris, de n’importe où dans le système. Tout ce qu'il faut, c'est un clic droit sur une police ou un dossier.

SelçukDERE
la source