Наводим порядок в коллекции шрифтов — скрипт для PowerShell

  • Автор темы Автор темы Johan
  • Дата начала Дата начала

Johan

Regis ter edus er!
Топикстартер
15 лет на форуме
Сообщения
179
Реакции
38
Я думаю, у всех есть личная «коллекция» из 10-15 тысяч шрифтов, скачанных в разное время, из разных мест, в виде названных черти как файлов?

Для себя решил решить этот вопрос, получилось примерно следующее:
Открываем PowerShell (улучшенный вариант консоли в венде).
Вбиваем команду
Код:
Add-Type -AssemblyName PresentationCore
Далее вбиваем:
Код:
$massiv=Get-ChildItem -Path 'Диск:\путь\*.ttf'
foreach ($a in ($massiv).Fullname)
{
$n=(New-Object -TypeName Windows.Media.GlyphTypeface -ArgumentList $a).FamilyNames.Values
$nn='Диск:\новый_путь\'+$n
if (!(Test-Path $nn)){New-Item -Path $nn -ItemType Directory}
Move-Item $a -Destination $nn
}

Далее ждем и любуемся логом :)

Этот скрипт создает для каждого шрифта по указанному пути папку с названием гарнитуры и перемещает туда все варианты начертания. Работает с TT и OTF (заменить расширение в 1-й строке 2-й команды), не работает с T1. Если какие-то файлы остались — значит они в какой-то степени кривые.

P.S. Диск, путь и расширение подставляете свои, разумеется.
 
Последнее редактирование:
P.P.S. По умолчанию Get-ChildItem выводит только объекты, находящиеся в корне указанной директории. Для просмотра содержимого всех дочерних элементов необходимо использовать командлет с параметром -Recurse.

Код:
Get-ChildItem -Path 'Диск:\путь\*.ttf' -Recurse
 
Последнее редактирование:
  • Спасибо
Реакции: a-bom
Немного допилил твою идею.
Файл !_FontRename.ps1 кладется в корневой каталог со шрифтами. Запускается через Powershell.
В корне создастся папка !_NewNames и туда копируются все шрифты из всех подпапок. Для каждого шрифта создается своя папка, файл шрифта переименовывается в название + гарнитура. Шрифты из семейства (при условии, что данные шрифта создателем подписаны верно) складываются в одну папку. Файлы с ошибками попадут в папку !_ERRORS.
Обрабатывает ttf и otf. Если нужно добавить другие - впишите в $ext=@('.ttf','.otf')
Старые файлы все останутся, можно не бояться.
Далее можно туда положить файл !_1 file.ps1 и запустить. Он выложит из папки шрифт в корень и убьет папку, если в папке только один файл.
 

Вложения

  • Спасибо
Реакции: Johan