|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Скрипт для переименовывания файлов с латиницы на русский лад |
|
|
Любой язык - Скрипт для переименовывания файлов с латиницы на русский лад
|
Старожил Сообщения: 393 |
Профиль | Отправить PM | Цитировать |
|
Отправлено: 15:10, 05-01-2021 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Latinyanin:
Цитата Latinyanin:
Цитата Latinyanin:
Чтобы вам было попроще, сделал запускающий сценарий cmd (run_me.bat), который запускает необходимый сценарий powershell (script.ps1) - см. приложенный архив с необходимой структурой внутри: TEMP.rar Книги надо будет поместить в каталог BOOKS, расположенный рядом со скриптом script.ps1 Если упаковка книг не требуется, то в батнике необходимо удалить ключ -fbz Всё. Запускаем батник и ожидаем выполнения скрипта. Появляющиеся в процессе работы скрипта красные надписи, необходимо читать внимательно и полностью. |
|||
------- Последний раз редактировалось YuS_2, 14-01-2021 в 21:26. Отправлено: 21:18, 14-01-2021 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 544
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Latinyanin:
|
|
------- Отправлено: 16:53, 15-01-2021 | #22 |
Старожил Сообщения: 393
|
Профиль | Отправить PM | Цитировать Снова привет!
Порекомендованная программа FB2Toolbox очень помогла с переименовывавнием файлов fb2 книг. Но! Все-таки мне нужен скрипт небольшой, который бы "допилил" под мои нужды результаты работы FB2Toolbox. На скриншооте FB2Toolbox.exe виден список книг одной серии. Скрипт должен добавить в имя файла два компонента: один пробел перед и после каждого тире(-) добавить ноль перед каждой цифрой списка от 1 до 9 сама папка с файлами для переименовывания Возможно? Может надо отдельную тему создать? |
Последний раз редактировалось Latinyanin, 21-01-2021 в 14:41. Отправлено: 14:22, 21-01-2021 | #23 |
Старожил Сообщения: 393
|
Профиль | Отправить PM | Цитировать Порекомендованная программа FB2Toolbox очень помогла с переименовывавнием файлов fb2 книг
|
Отправлено: 15:34, 21-01-2021 | #24 |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Интересно а как .... в предложенном YuS_2 скрипте
1. увеличить рекурсию более 2 уровней в скрипте 2. бороться с флагом "для чтения" который навешивается автоматом на входную и выходную папки 3. вывести обработку ошибок ( скажем так ...... 1 - если нет тега "автор", "название" - оставлять как есть(ныне частенько так спешат верстать фб что их просто нет).... 2 - добавить цифровую составляющую к копиям, что бы не сносилось в ноль....3 - почему то некоторые зип не дают скрипту прочесть теги, только по распаковке) 4. ..... наверное главное))) литература для "чайника" по повершелл.... просто чую что никто этого не сделает))) а хочется понять и разобраться, чтоб самому сделать. .......... если по п. 1 . еще что то встречается, то вот по п2. в ступоре почему система автоматом вывешивает флаг" для чтения" - остаются исходные файлы.... пробовал вручную менять , но тут же был отшит системой))) |
Последний раз редактировалось Андрей_Ахмедов@vk, 16-03-2021 в 03:45. Причина: дублирование информации Отправлено: 03:32, 16-03-2021 | #25 |
Забанен Сообщения: 793
|
Андрей_Ахмедов@vk, 1 -Recurse -Depth ...
2. -Force (или просто снять бит) 3. try .. catch .. finally; throw 4. Get-Help |
Отправлено: 11:09, 16-03-2021 | #26 |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать greg zakharov, Get-Help увы не для "чайника" изучавшего древний паскаль во времена эмулятора 8086))... ну еще чуток ЛУА для сталкера - мелкие правки для внесения своей "великой лепты" в игру и чужие моды )).....
По хелперу надо иметь представление что именно ищещь. А основная литература либо для сисадминов, либо затрагивает больше именно те моменты для чего в общем то и делался повершелл - администрирование(ну кроме банального "Привет мир" в начале). Вот что из отряда прикладных повседневных задач для пользователей из литературы бы? И СПАСИБО! За внимание и ответ. |
Отправлено: 12:54, 16-03-2021 | #27 |
Забанен Сообщения: 793
|
Андрей_Ахмедов@vk, увы, но проще способа нет, ибо когда лично брался за Powershell (тогда ещё Monad), вообще не было никакой документации, так что лучше с Get-Help и начать. Проще никак. В моём случае мне подспорьем был опыт программирования на C#, чтение спецификаций и монографии Рихтера о CLR, а также много часов экспериментов с кодом и отладчиком.
|
Отправлено: 13:18, 16-03-2021 | #28 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Цитата Андрей_Ахмедов@vk:
Цитата Андрей_Ахмедов@vk:
Покажите скриншот - как именно, Вы проверяете атрибуты? Цитата Андрей_Ахмедов@vk:
2. С копиями тоже посмотрю... 3. Не понял про что речь. Архивы сначала распаковываются, а потом уже обрабатываются файлы *.fb2, никакие теги внутри архивов не парсятся. |
|||
------- Последний раз редактировалось YuS_2, 18-03-2021 в 21:08. Отправлено: 20:52, 18-03-2021 | #29 |
Crazy Сообщения: 1171
|
Профиль | Отправить PM | Цитировать Андрей_Ахмедов@vk,
Цитата YuS_2:
param( [string]$in = '.\BOOKS', [string]$out = '.\BOOKS_OUT', [string[]]$include = ('*.fbz','*.zip'), # Каталог для книг .fb2, если какой-либо тег отсутствует # Для дальнейшего ручного разбора... [string]$error = '.\ERROR', # Путь к внешнему архиватору 7zip (консольному) [string]$zippath = 'd:\Program Files\7-Zip\7z.exe', # Ключ использования внешнего архиватора [switch]$extzip, # Ключ переименования распаковываемых файлов "имя файла_1", # если существуют, иначе будет вопрос на действие от архиватора # Работает только со внешним архиватором 7zip. [switch]$copy, # Ключ для удаления исходных архивов .zip и книг .fb2 [switch]$delete ) function expand-zip { process { try{ if ($_.extension -match '\.fbz|\.zip'){ if ($_.extension -eq '.fbz'){ren $_.fullname $($_.basename+'.zip')} $zip = gi $($_.fullname -replace '\.fbz','.zip') if ($extzip){ $arg = " e $($zip.fullname)" if($zippath -match '7z.exe$'){ pushd $zip.directoryname if ($copy){&$zippath 'e' $($zip.fullname) '-aou'} else {&$zippath 'e' $($zip.fullname)} popd } else {"Использовать необходимо 7z.exe"} } else {expand-archive $zip.fullname $zip.directoryname -ea 1} if($delete){del $zip} } } catch { popd 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} if (!(test-path $error -patht 'Container')){$null = md $error} $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' if(!( $book.author.'first-name' -and $book.author.'last-name' -and $book.'book-title' )){ write-host "Заполните теги: author.'first-name',author.'last-name','book-title'" -for red write-host "файл - $($_.name)" -for red mi $_.fullname $error; return } $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 ) } else { $new = $d_author.fullname+'\'+($book.'book-title' -replace $except) } $tmp = $_ try{mi $_.fullname $($new+$_.extension) -ea 1} catch { write-host "Невозможно переместить файл: $($tmp.fullname)" -for cyan write-host "Ошибка: $_" -for red } $arch = gi ($new+$_.extension) if ($extzip){ if($zippath -match '7z.exe$'){ pushd $arch.directoryname &$zippath 'a' -tzip $($arch.basename+'.zip') $($arch.name) popd } } else { compress-archive $arch.fullname $($arch.directoryname+'\'+$arch.basename+'.zip') } if ($delete){del $arch} } dir $folder.fullname -filt '*.zip' -file -rec|ren -new {$_.basename+'.fbz'} Перемещает файлы без тегов в отдельный каталог, для ручного разбора... Внедрен внешний архиватор 7zip, с возможностью оставлять копии исходных файлов... Пример: .\script.ps1 -ext -copy -del - используется внешний архиватор - файлы извлекаемые из архивов, будут переименованы (только с помощью внешнего архиватора), если одноименные файлы присутствуют в каталоге - исходные файлы архивов и книг, будут удалены после обработки. |
|
------- Последний раз редактировалось YuS_2, 19-03-2021 в 19:04. Причина: дополнение описания Отправлено: 15:26, 19-03-2021 | #30 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|