web-dev-qa-db-fra.com

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

Est-il possible d'installer des polices à partir de la commande Invite 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 d'un programme, ce qui ne fonctionnait certainement pas. (Bien que je puisse pouvoir supprimer les polices du dossier Polices par la suite)

36
Mussnoon

C'est possible mais vous devez écrire un script Windows Shell 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 d'exécuter fontview.exe pour 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 .

30
GeneQ

Dans Powershell, cela peut être aussi simple que:

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

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
5
mivk

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

3
afrazier

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. Lorsque vous exécutez le raccourci pour la première fois, 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.

1
Desktop Masters

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/A-D-H-S/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

0
Sam Doxy