回答:
可能ですが、それを行うには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
完全なソリューションはこちらをご覧ください。
*.ttf
と*.fon
フォントを自動的にインストールする(2)Const FONTS = &H14&
ここで提案されているとおりに使用する(sevenforums.com/general-discussion/…)。私はVBSの王ではありません:(事前に感謝します。
objFolderItem.InvokeVerb("Install")
Windows Server 2012 R2で動作しない
copy
およびreg add
Windows®の10のプログラムに記載されているフォントを作るていない
Powershellでは、これは次のように簡単にできます。
$fonts = (New-Object -ComObject Shell.Application).Namespace(0x14)
dir fonts/*.ttf | %{ $fonts.CopyHere($_.fullname) }
Get-ChildItem -Recurse -include *.ttf | % { $fonts.CopyHere($_.fullname) }
Get-ChildItem
、Powershellの方法です。Powershellの方法は嫌いです(ここではUNIXシェルの愛情があります)dir
。再帰が必要な場合は、指定したオプションを使用してください。単純な「このフォルダ内のファイルをスキャンするだけ」の場合、私のバージョンはより冗長で読みやすいです。
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
私の場合、InstallFonts.vbsというスクリプトファイルを作成し、C:\ PortableApps \ InstallFonts \に配置します。次のコードでは、「SomeUser」をフォントをインストールできるユーザーのユーザー名に置き換えます。次に、デスクトップに適切な「フォントのインストール」フォルダーを作成します。
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プロンプトからショートカットを実行してください。
昇格したコードを実行するために使用できる場合のように、これがどれほど安全であるかをお約束することはできません。しかし、それは解決策です。
先にGeneQで述べたように、これがあなたの進め方です(私はそれをテストしました)
/ F "delims =;"の場合 %a in( 'dir C:\ FontsDir / B / ADHS / S')do fontview%a
C:\ FontsDirは、tffファイルが保存されているディレクトリです。実行されると、「fontview」ウィンドウが「FontsDir」ディレクトリ内のtffファイルの数だけ開かれます。「インストール」ボタンをクリックするだけで、そこにいます!フォントがシステムにインストールされている
それが誰かを助けることを願っています
for
(たとえば)ではなく、このような複雑なコマンドなのfor %a in (C:\FontsDir\*.*) do fontview "%a"
か?
Windowsのバージョンはリストしませんでしたが、Vistaまたは7を実行していると想定しています。そのディレクトリにコピーするには管理者権限が必要です。もう一度やり直してくださいが、今回は昇格したコマンドプロンプトのインスタンスを使用します。