![]() |
Скрипт для переименовывания файлов с латиницы на русский лад
|
Реально, но это будет очень криво, и лучше оставить как есть.
|
Цитата:
Цитата:
powershell Код:
$folder = '.\BOOKS' |
Коллеги, это опять fb2, то бишь, надо смотреть внутрь xml и брать содержимое тэгов author (/FictionBook/description/title-info/author/first-name, /FictionBook/description/title-info/author/middle-name
/FictionBook/description/title-info/author/last-name) и /FictionBook/description/title-info/book-title. |
Цитата:
Код:
param( |
Fors1k, кодировка файлов может быть как ANSI/1251, так и UTF-8/65001.
|
Цитата:
Код:
param( |
Latinyanin, всё это элементарно делается специальным софтом для работы с FB2. Не нужны никакие скрипты, да и разобраться неподготовленному юзеру будет проще.
К примеру возьмите эту утилиту - FB2Toolbox , она наиболее подходит для Вашей задачи. Хотя, как выше заметил ув. Iska, всё зависит от структуры файла, как в файле указан тэг author |
Цитата:
Как и неописанный namespace внутри fb2 :shot:. |
Цитата:
По мотивам этого топика и идее Iska, "состряпал" скрипт. Не идеальный, со своими недостатками, но свою функцию выполняет на тех файлах, которые у меня давно хранились в куче, безо всякого порядка... Что делает: 1. Читает рекурсивно каталог на предмет файлов, архивов *.zip, *.fbz (возможно указать другие расширения, но распаковывать будет только формат zip), распаковывает архивы, удаляет их. 2. Считывает fb2. 3. Создает структуру каталогов в формате: <корневой каталог $out>\<author.'last-name'> <author.'first-name'>\ При наличии авторов более одного, для именования каталога, будет использоваться только первый по списку. Далее, при наличии серии, создает подкаталог с именем <sequence.name> 4. Перемещает книги в соответствующие каталоги с переименованием, в формате: <sequence.number>_<sequence.name>_<'book-title'> 5. Упаковывает книги в формате zip (при наличии ключа -fbz) 6. Переименовывает расширение у архивов с книгами из .zip в .fbz (при наличии ключа -fbz. Расширение возможно указать любое другое) Если в исходном каталоге имелась структура каталогов, её придется удалять вручную... не стал заморачиваться с доп.проверками на "пустой - не пустой"... при желании, можно прикрутить, сложности большой в том нет... script.ps1
Код:
# http://forum.oszone.net/post-2945350.html#post2945350 |
Вероятно, надо предусмотреть присутствие в тэгах символов, которые не могут быть использованы в именах файлов и каталогов.
|
Цитата:
Код:
-replace '\[|\]' Добавлено: Собственно, fixed, здесь можно пополнять/редактировать: Код:
$except = '\[|\]|<|>|\*|\"|:|\?|\\|/|\|' |
Без оглядки на стандарты, беря во внимание исключительно конкретный случай, можно набросать на коленке примерно следующее:
Код:
function ConvertFrom-Translit { Код:
('Loginov_Dolina_Loreien.103821.fb2', Код:
Долина_Лореиен Более надёжный способ послать запрос в Google Translate (https://translate.google.ru/?sl=auto...2&op=translate) и забрать, скажем, Selenium'ом вполне себе нормально конвертированный текст. Хотя если есть API ключ, то можно с Selenium не заморачиваться, а брать конвертированный текст напрямую. |
Цитата:
|
Latinyanin, ну вперёд:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Uragan66,
за утилиту спасибо - насчет сложно разобраться так у меня два скрипта мне норм работают пока |
Latinyanin, да, я бы тоже опробовал вначале именно утилиту.
|
Все-таки придется тупо вручную наверное переиеименовывать. Ни один из трех скриптов опыта не дал результата потребного. Хотя с другими книгами опыт был но все также поименованными латиницей
https://yadi.sk/d/QI5RAbZK9aDVnQ но может не так оформил сам скрипт? Помещал в ту ж папку, что и файлы книг |
Вложений: 1
Цитата:
Цитата:
Цитата:
Чтобы вам было попроще, сделал запускающий сценарий cmd (run_me.bat), который запускает необходимый сценарий powershell (script.ps1) - см. приложенный архив с необходимой структурой внутри: Файл 163381 Книги надо будет поместить в каталог BOOKS, расположенный рядом со скриптом script.ps1 Если упаковка книг не требуется, то в батнике необходимо удалить ключ -fbz Всё. Запускаем батник и ожидаем выполнения скрипта. Появляющиеся в процессе работы скрипта красные надписи, необходимо читать внимательно и полностью. |
Цитата:
|
Снова привет!
![]() Порекомендованная программа FB2Toolbox очень помогла с переименовывавнием файлов fb2 книг. Но! Все-таки мне нужен скрипт небольшой, который бы "допилил" под мои нужды результаты работы FB2Toolbox. На скриншооте FB2Toolbox.exe виден список книг одной серии. Скрипт должен добавить в имя файла два компонента: один пробел перед и после каждого тире(-) добавить ноль перед каждой цифрой списка от 1 до 9 сама папка с файлами для переименовывания ![]() Возможно? Может надо отдельную тему создать? |
Порекомендованная программа FB2Toolbox очень помогла с переименовывавнием файлов fb2 книг
|
Интересно а как .... в предложенном YuS_2 скрипте
1. увеличить рекурсию более 2 уровней в скрипте 2. бороться с флагом "для чтения" который навешивается автоматом на входную и выходную папки 3. вывести обработку ошибок ( скажем так ...... 1 - если нет тега "автор", "название" - оставлять как есть(ныне частенько так спешат верстать фб что их просто нет).... 2 - добавить цифровую составляющую к копиям, что бы не сносилось в ноль....3 - почему то некоторые зип не дают скрипту прочесть теги, только по распаковке) 4. ..... наверное главное))) литература для "чайника" по повершелл.... просто чую что никто этого не сделает))) а хочется понять и разобраться, чтоб самому сделать. .......... если по п. 1 . еще что то встречается, то вот по п2. в ступоре почему система автоматом вывешивает флаг" для чтения" - остаются исходные файлы.... пробовал вручную менять , но тут же был отшит системой))) |
Андрей_Ахмедов@vk, 1 -Recurse -Depth ...
2. -Force (или просто снять бит) 3. try .. catch .. finally; throw 4. Get-Help |
greg zakharov, Get-Help увы не для "чайника" изучавшего древний паскаль во времена эмулятора 8086))... ну еще чуток ЛУА для сталкера - мелкие правки для внесения своей "великой лепты" в игру и чужие моды )).....
По хелперу надо иметь представление что именно ищещь. А основная литература либо для сисадминов, либо затрагивает больше именно те моменты для чего в общем то и делался повершелл - администрирование(ну кроме банального "Привет мир" в начале). Вот что из отряда прикладных повседневных задач для пользователей из литературы бы? И СПАСИБО! За внимание и ответ. |
Андрей_Ахмедов@vk, увы, но проще способа нет, ибо когда лично брался за Powershell (тогда ещё Monad), вообще не было никакой документации, так что лучше с Get-Help и начать. Проще никак. В моём случае мне подспорьем был опыт программирования на C#, чтение спецификаций и монографии Рихтера о CLR, а также много часов экспериментов с кодом и отладчиком.
|
Цитата:
Цитата:
Покажите скриншот - как именно, Вы проверяете атрибуты? Цитата:
2. С копиями тоже посмотрю... 3. Не понял про что речь. Архивы сначала распаковываются, а потом уже обрабатываются файлы *.fb2, никакие теги внутри архивов не парсятся. |
Андрей_Ахмедов@vk,
Цитата:
Код:
param( Перемещает файлы без тегов в отдельный каталог, для ручного разбора... Внедрен внешний архиватор 7zip, с возможностью оставлять копии исходных файлов... Пример: .\script.ps1 -ext -copy -del - используется внешний архиватор - файлы извлекаемые из архивов, будут переименованы (только с помощью внешнего архиватора), если одноименные файлы присутствуют в каталоге - исходные файлы архивов и книг, будут удалены после обработки. |
Спасибо. По работе старого скрипта ----
1 - немного разобрался... Так суть - не смотря на "- rec" (Recurse ? - все же сокращения пока для меня "лес темноватый, не везде проходимый") берется всего 2 уровня подкаталога. Ниже не просматривает.... Оттого и задавал вопрос 2- По " рид онли" - свойства папок из проводника.... Скрипт вывешивал (ошибку ) ред по удалению(исходник переносится в целевую для дальнейших действий скрипта и ошибка удаления) - проверял именно по этому, что бы разобраться по ошибке удаления файла перенесенного в целевой каталог\подкаталог - они так парой и существуют по окончанию работы старого скрипта... То есть *.fbz c *.fb2... Флаг снимал руками в свойствах папок, но как только запускал, он снова навешивался... Есть мысль что данное действие автоматом делает винда (точнее политика безопасности системы вкупе с защитником вондовс - своеобразная реакция на запуск скрипта без общего разрешения ... Запускал через батник скрипт, в pwsh и pwsh ise не делал разрешения ) (По этому поводу набросал себе блок схему на реализацию распаковки\запаковки в каталоге источника, с дальнейшим переносом в целевой... (ну надо же свои "наполеоновские" на будущее оформлять)) ) Цитата:
....Хотя может и я внес - проба добавления флагов в командлеты скрипта. ..................... Ну и по копиям - проще всего это при наличии подкаталога и имеющихся одноименных файлов по основной длине имени совпадающих (самое простое на мой взгляд решение) прибавка к имени переносимого файла цифры количества уже имеющихся в целевой папке файлов (так как первый будет без цифры - получаем номер данной копии) . Для чего это надо - бывает несколько вариаций (по количеству страниц, обложке, реализации оформления) и иногда не нумеруется том в серии произведения (то есть одноименные файлы по сути в которых пропустили номер тома , а наименование одно и тоже) |
Вот собственно блок схема которую хочу реализовать(если интересно)
И спасибо за *.fbz - не всегда простые такие вот решения приходят в голову... Меня выручило это - читалка работает спокойно, а RAR и 7zip с ней не пересекаются))) и не надо мучаться с приоритетной привязкой по архивным расширениям. |
Цитата:
Цитата:
Цитата:
Цитата:
Не вижу смысла в хранении копий одной и той же книги... Если таки требуются целевые копии, то проще всего, в необходимых книгах, в теги наименования добавить уникальные идентификаторы, тогда скрипт создаст уникальные же имена файлов. А вообще, нужны примеры таких копий... тогда можно и подумать над тем, как и куда их складировать... |
Вложений: 1
Вот.
Предыстория - 11 марта как раз проверял))) единственно до снятия вручную стояло - для всех папок и файлов. То что видите сейчас на скрине - результат применения изначального скрипта на уже снятом перед этим флаге "только для чтения" вручную через то же диалоговое окно . Виндовс 8.1 про 64 бита |
Цитата:
1. Эстетика - к примеру "битая" книга ... в которой картинка обложки была убита по разным причинам. 2. Переиздание дополненное той или иной информацией. 3. Как уже писал, просто банально пропущен номер тома в серии книг имя которых только номером тома и различить можно (есть серия типа "вархаммер" в которой названия идут таким вот образом --- Костыль который стреляет. Том 1 (ну или Том первый, бывает номер римскими цифрами обозначен....) ....................................... Том 2 и т.д. (только вот в тегах номер тома пропущен - правил такое руками, но там было 40 томов в той серии....) (название не конкретное "от балды" как говорится (там название "зубодробительное" на 30 знаков было типа хххххххххххххххххх.хххххххххх.Том(цифры латинские). fb2) - просто пока внешний диск с коллекцией отсутствует, брат попросил для переноса данных ) Руками можно конечно править такое, но когда объем 200Гб и встретится пару десятков таких серий.... настроение падает ниже уровня пола |
Вложений: 1
Да и стандартизация (лишние пробелы) в самом массиве данных тега убрать можно автоматически? Имею в виду проверку на лишние пробелы в стринг переменной?
Скрин примера таких - 1 случай типичен, ниже .... думаю это уже в ручную править проще, чем нагружать скрипт сортировкой по не полному соответствию... |
Или проще все же не на повершелл сделать... Тяжеловато пока воспринимается, не нашел начального уровня литературы еще.
|
Цитата:
Как и предполагал. Это не флаг "только для чтения"... это микрософт, чудесным образом, впихнул в булевый чекбокс три состояния :) "Птица", "Пусто", "Закрашено" - так вот, "птица" - это состояние "только для чтения", "закрашено" и "пусто" - нет. Создайте каталог через проводник в любом месте и посмотрите его свойства, пощелкайте чекбокс - будет понятно о чем речь. Цитата:
Цитата:
Цитата:
Цитата:
|
Андрей_Ахмедов@vk,
почти по Вашей блок-схеме :) тестируйте: script.ps1
Код:
<# - Поправлены старые баги, добавлены новые :) Кроме того: - скрипт разделен на функции - добавлены новые параметры, для более гибкого управления работой скрипта - начальные и конечные пробелы в наименовании удаляются, двойные (и более) пробелы заменяются одинарными. - возможна гибкая настройка удаления исходных и целевых файлов - возможно создание дубликатов с инкрементным счетчиком - при отсутствии тегов, книги перемещаются в спец.каталог, для ручной правки - добавлено ведение нескольких логов (логи упаковки, распаковки внешним архиватором и лог ошибок) Пример запуска: Код:
.\script.ps1 -log -zipdel -duble -fb2del -ext -copy -archlog |
По предыдущему скрипту ---
--- так сказать минусовка 1. fb2.zip - остаются в каталоге источнике(корневой и подкаталоги) , не запакованные в зип удалены (тут не все так однозначно - не все зип оригиналов остались... что то навевает о разных немного архиваторах и\ или запуска скрипта из батника .... странный эффект) 2. в корневом каталоге (book) остались простые fb2 файлы 3. в каталоге приемнике(book_out ) лежат парой fb2 & fb2.zip --- плюсы 1 . глубина подкаталогов в 6 уровней спокойно проходится 2. меньше затраченного времени ( быстрее обработка происходит несколько) ..................... Опять таки думается про запуск из батника - флаги "только чтение" навесились снова и в окне скрипта ред по поводу не возможности удаления Через оболочку на прямую не запускал. .................... Попробую еще вчерашний вариант. |
Цитата:
В примерах есть строка запуска с описанием результатов. В исходном каталоге могут, при определенном наборе ключей, оставаться файлы fb2, которые по какой-либо причине не были перенесены в целевой каталог (об этом будет запись в консоли и в логе, если включить ведение лога). Цитата:
Цитата:
|
Пытаюсь)))
Единственное что общего на данный момент это то что запускаю с батника.... думаю с этой стороны покопаться, но... в силу обстоятельств (завтра в больницу , под наблюдение ложиться надо ) чуть позже. На неделю точно...( ЭКГ вышла что то плохой, от слова совсем.) Книгу Попова на телефоне помучаю - нашел чем оффлайн нормально сконвертировать в fb2, а то в pdf достаточно емкое было. На VSC по повершелл кроме стандарта пока интересного не нашел, но подход больше нравится, нежели родного отладчика (ISE) . Спасибо большое! П.С. В любом случае я получил больше чем ожидал. Даже первым скриптом обработка данной массы книг уменьшалась раз в 8-10))) А на данном этапе это очень много рутинных операций (которые мелкие программы\плагины просто не воспринимали из за объема данных, да и не все каталогизаторы объективно воспринимали) ..... |
Время: 10:27. |
Время: 10:27.
© OSzone.net 2001-