View previous topic :: View next topic |
Author |
Message |
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Fri Jan 11, 2019 22:39 Post subject: Создание txt файла в каталоге с текстом из названия папки |
|
|
Здравствуйте.
Такой вопрос.
Есть много папок с именами вида:
Name Surname - Film title
Name Surname, Name2 Surname2 - Film title2
Name Surname, Name2 Surname2, Name3 Surname3 - Film title3
Главные актеры и название фильма (для ясности).
Как автоматизировать создание txt файла (actors.txt) в каждой папке содержащий имена актеров (в UTF-8) в случае если их больше одного в названии папки? И (если возможно) последующем удалении всех имен из названия папки кроме первого имени.
Например:
Name Surname - Film title (txt не требуется)
Name Surname, Name2 Surname2 - Film title2 (actors.txt, содержимое Name Surname, Name2 Surname2. Папка переименовывается в Name Surname - Film title2)
Name Surname, Name2 Surname2, Name3 Surname3 - Film title3 (actors.txt, содержимое Name Surname, Name2 Surname2, Name3 Surname3. Папка переименовывается в Name Surname - Film title3)
Имена в названии папки всегда разделяются запятой и стоят перед первым тире.
Автоматизация сэкономит просто тонну времени, помогите пожалуйста с этим вопросом. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 04:22 Post subject: |
|
|
doommyyy wrote: | Есть много папок | Где в рамках ТС эти папки? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 07:09 Post subject: |
|
|
На локальном компьютере. Или в каком смысле где? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 07:35 Post subject: |
|
|
Я написал "в рамках ТС". Как запрос относится к Total Commander? При чём тут локальный компьютер? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 07:45 Post subject: |
|
|
Если честно, то не понял вопрос. В рамках ТС, в левом окне, допустим)
Если опять не то написал, уточните пожалуйста подробней, т.к. я в ТС не эксперт и не понимаю с полуслова. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 07:55 Post subject: |
|
|
doommyyy wrote: | в левом окне, допустим) | Не окне, а файловой панели. Что должно находиться в этой панели? И каков ваш предварительный алгоритм действий в ней? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 08:29 Post subject: |
|
|
Предварительных действий нет. Каталог с файлами уже есть и все чем занимаюсь, это созданием txt файлов в каждой папке.
Полный алгоритм действий:
Открываю каталог в левой файловой панели. В ней много папок вида:
Name Surname - Film title
Name Surname, Name2 Surname2 - Film title2
Name Surname, Name2 Surname2, Name3 Surname3 - Film title3
Выделяю папку "Name Surname, Name2 Surname2 - Film title2"
Переименовать > копирую "Name Surname, Name2 Surname2" > удаляю ", Name2 Surname2" = получается папка Name Surname - Film title2
Захожу внутрь > создать actors.txt > Вставить из буфера Name Surname, Name2 Surname2 > сохранить.
Потом следующую папку где больше одного имени - "Name Surname, Name2 Surname2, Name3 Surname3 - Film title3"
Name Surname - Film title3 > actors.txt c "Name Surname, Name2 Surname2, Name3 Surname3"
и т.д. до бесконечности (папок около 18к).
Все названия папок однотипные, т.е. всегда перед первым тире есть имена разделенные запятой (или одно имя и запятых нет). |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 08:41 Post subject: |
|
|
doommyyy wrote: | Предварительных действий нет. | А это что?:
doommyyy wrote: | Открываю каталог в левой файловой панели.
Выделяю папку | Остальное я не спрашивал.
Обязательно UTF-8? UTF-16 пойдёт? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 09:23 Post subject: |
|
|
Да, обязательно UTF-8 |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 09:25 Post subject: |
|
|
А можно поинтересоваться зачем? Просто с UTF-16 ваша задача (я так понимаю, одноразовая) вполне осуществима в несколько действий силами ТС.
В любом случае пересохранить в редакторе в другой кодировке не должно явиться проблемой.
Рассказываю как.
1) По маске <^[^-]*, (Num+) выделить нужные папки и сохранить выделение в файл из гл. меню или из комстроки по cm_SaveSelectionToFileW.
После открыть список в редакторе с поддержкой регулярных выражений, в инструменте поиска и замены в поле поиска прописать ' - .*' (без апострофов), отметить опцию Рег. выраж. и выполнить. Список пересохранить в UTF-8.
doommyyy wrote: | создание txt файла (actors.txt) в каждой папке | Хотя стоп. Для каждой нужно поделить список построчно. Чуть позже на это отвечу.
2) Восстановить выделение в панели клавишей [/], вызвать ИГП (Ctrl+M):
Найти: '[^,],.*-'
Заменить на: ' -'
☑ Рег. Выраж. (только)
Посмотреть на предварительные результаты в диалоге и подтвердить по Enter.
В общем, вот код: Code: | '============================= VBS =============================
' Убрать в именах папок активного каталога не первые антропонимы
' до знака - и создать в них строчные списки всех исходных имён
' Условие: Путь запуска — пустой
'===============================================================
Set Stm = CreateObject("ADODB.Stream")
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Fd In FSO.GetFolder(FSO.GetAbsolutePathName("")).SubFolders
If InStr(Fd.Name, " -") Then
Arr = Split(Fd.Name, " -") : LName = Arr(0)
If InStr(LName, ",") Then
Fd.Name = Left(LName, InStr(LName, ",") - 1) & " -" & Arr(1)
With Stm
.Open : .Type = 2 : .CharSet = "UTF-8" : .WriteText Arr(0)
.SaveToFile Fd.Path & "\actors.txt", 2 : .Close
End With
End If
Else Errs = Errs & vbCr & Fd.Name
End If
Next
Set Stm = Nothing : Set FSO = Nothing
MsgBox Space(16) & "Выполнено!" & Errs, 4160,_
" Переименовать папки и создать в них списки " | См. памятку раздела. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Last edited by Flasher on Sat Jan 12, 2019 11:52; edited 3 times in total |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 11:00 Post subject: |
|
|
Задача не одноразовая, но не очень часто возникающая. Обычно данных меньше (до 600 папок), но сейчас их очень много получилось.
Результаты (название папки, txt документ и еще некоторые другие вещи) обрабатываются на сервере и парсятся в БД для последующей публикации на сайте. Парсер понимает UTF-8 только.
Я тут привел пример актеров и фильмов (для простоты и наглядности), но кроме них есть связки игры - жанры, сериалы - актеры, актеры - биографии и т.д.
Пересохранить в UTF-8 не проблема, действительно. В notepad++ можно быстро сделать.
По вашей инструкции все сделал и получился текстовый файл в котором есть все имена. А нужно чтобы имена сохранялись в каждой папке.
Т.е. каждая папка где больше одного имени имеет txt файл с перечислением этих имен.
UPD
Увидел код, попробую.
Добавлено спустя 12 минут:
Огромное спасибо. Получилось.
Добавлено спустя 8 минут:
Попробовал для теста на нескольких папках, сработало.
А когда полный каталог попытался обработать, то выдало ошибку https://yadi.sk/i/olmFNI_tHl_F4g
Индекс выходит за пределы допустимого диапазона. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 11:33 Post subject: |
|
|
doommyyy wrote: | Имена в названии папки всегда ... стоят перед первым тире. | Значит, не всегда. Ищите папки без ' - '.
Добавил в код условие, чтобы такие игнорировать. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
doommyyy
Joined: 11 Jan 2019 Posts: 7
|
(Separately) Posted: Sat Jan 12, 2019 11:41 Post subject: |
|
|
Да нашел проблему. В паре папок не было пробела перед '-'.
Поправил и сработало. Большое спасибо!
Quote: | Добавил в код условие, чтобы такие игнорировать. |
Без этого условия оставлю, очень полезно на самом деле, если скрипт будет чекать косячные папки)) |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Jan 12, 2019 11:55 Post subject: |
|
|
По одной "чекать"? Добавил, чтобы "косячные" в инфоокне отобразились.
Пож-та. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|