|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Скрипт для переименовывания файлов с латиницы на русский лад |
|
Любой язык - Скрипт для переименовывания файлов с латиницы на русский лад
|
Старожил Сообщения: 421 |
|
|
Отправлено: 15:10, 05-01-2021 |
fascinating rhythm Сообщения: 6690
|
Профиль | Отправить PM | Цитировать Реально, но это будет очень криво, и лучше оставить как есть.
|
------- Отправлено: 15:22, 05-01-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Цитата Latinyanin:
Цитата Latinyanin:
powershell |
||
------- Отправлено: 11:53, 06-01-2021 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Коллеги, это опять 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. |
Отправлено: 15:54, 06-01-2021 | #4 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
||
Отправлено: 17:06, 06-01-2021 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Fors1k, кодировка файлов может быть как ANSI/1251, так и UTF-8/65001.
|
Отправлено: 18:22, 06-01-2021 | #6 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось Fors1k, 06-01-2021 в 20:10. Отправлено: 19:47, 06-01-2021 | #7 |
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Latinyanin, всё это элементарно делается специальным софтом для работы с FB2. Не нужны никакие скрипты, да и разобраться неподготовленному юзеру будет проще.
К примеру возьмите эту утилиту - FB2Toolbox , она наиболее подходит для Вашей задачи. Хотя, как выше заметил ув. Iska, всё зависит от структуры файла, как в файле указан тэг author |
Отправлено: 01:04, 07-01-2021 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Fors1k:
Как и неописанный namespace внутри fb2 ![]() |
|
Отправлено: 04:26, 07-01-2021 | #9 |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Цитата Iska:
По мотивам этого топика и идее 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 # Изменен 15.01.2021 # Примеры запуска из консоли powershell: # с архивацией целевых файлов: # .\script.ps1 -in "D:\Books" -out "D:\Out" -fbz # без архивации: # .\script.ps1 -in "D:\Books" -out "D:\Out" param( [string]$in = '.\BOOKS', [string]$out = '.\BOOKS_OUT', [string[]]$include = ('*.fbz','*.zip'), [switch]$fbz ) function expand-zip { process { try{ if ($_.extension -match '\.fbz|\.zip'){ if ($_.extension -eq '.fbz'){ren $_.fullname $($_.basename+'.zip')} $zip = gi $($_.fullname -replace '\.fbz','.zip') expand-archive $zip.fullname $zip.directoryname -ea 1 del $zip } } catch { write-host "ошибка: $_" -for red } } } # https://docs.microsoft.com/ru-ru/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN $except = '\[|\]|<|>|\*|\"|:|\?|\\|/|\|' if (!(test-path $out -patht 'Container')){$null = md $out} $folder = gi $out dir $in -inc $include -file -rec|expand-zip dir $in -inc '*.fb2' -file -rec|%{ $arch,$b,$d,$d_author,$ser = $null,$null,$null,$null,$null if ((gc $_.fullname -tot 1) -match 'windows-1251'){ if ($pscore = $psversiontable.psversion.major -gt 5){ $encoding = 'windows-1251' } else {$encoding = 'default'} } else {$encoding = 'utf8'} $book = ([xml](gc $_.fullname -enc $encoding)).fictionbook.description.'title-info' $d = $folder.fullname+'\'+( (([array]$book.author)[0].'last-name'+' '+([array]$book.author)[0].'first-name') -replace $except ) if(!(test-path $d -patht 'Container')){$d_author = md $d} else {$d_author = gi $d} if ($book.sequence.number){ $b = $d_author.fullname+'\'+($book.sequence.name -replace ' ','-' -replace $except) if(!(test-path $b -patht 'Container')){$ser = md $b} else {$ser = gi $b} $new = $ser.fullname+'\'+$book.sequence.number+'_'+( (($book.sequence.name -replace ' ','-')+'_'+$book.'book-title') -replace $except )+$_.extension } else { $new = $d_author.fullname+'\'+($book.'book-title' -replace $except)+$_.extension } try{mi $_.fullname $new -ea 1} catch {write-host Ошибка: $new - $_ -for red} $arch = gi $new if ($fbz){ try{ compress-archive $arch.fullname $($arch.directoryname+'\'+$arch.basename+'.zip') -ea 1 del $arch } catch { write-host Ошибка: $($arch.directoryname+'\'+$arch.basename+'.zip') - $_ -for red } } } dir $folder.fullname -filt '*.zip' -file -rec|ren -new {$_.basename+'.fbz'} |
|
------- Последний раз редактировалось YuS_2, 15-01-2021 в 11:11. Причина: изменения в скрипте Отправлено: 08:58, 08-01-2021 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Скрипт для автоматиеского копированеи файлов на удаленный сервер | tutitam | Скриптовые языки администрирования Windows | 12 | 19-02-2013 15:09 | |
VBS/WSH/JS - нужен vbs скрипт для отпраки файлов на mail | exekill | Скриптовые языки администрирования Windows | 0 | 18-04-2012 16:28 | |
Разное - [решено] Ищу программу для переименовывания файлов | flower | Программное обеспечение Windows | 15 | 08-07-2010 18:40 | |
Ищу программу переименовывания файлов | venuko | Хочу все знать | 3 | 04-06-2009 19:44 | |
Скрипт для копирования файлов с 1 сервера на несколько | andro_id | Программирование в *nix | 2 | 04-09-2008 11:48 |
|