Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Переместить файлы по маске в папки, соответствующие маскам
Goto page 1, 2  Next
 
Post new topic   This topic is locked: you cannot edit posts or make replies.    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 14:20    Post subject: Переместить файлы по маске в папки, соответствующие маскам Reply with quote

Здравствуйте.
Ищу способ, который позволил бы перемещать файлы по маске в специальные новосозданные папки. Причем так чтобы перемещались по масково по отдельности в папки, т.е. файлы, соответствующие одной маской, отправляются в одну папку, а файлы соответствующие другой маске, отправляются в другую папку и т.д.
Дело в том, что у меня в одной папке есть около 500+ тыс. файлов, собранные со всех каталогов по поиску по маскам. И мне потребуется отсортировать огромную кучу файлов так, чтобы они переместились в соответствующие их маскам каталоги, причем названия каталогов должны браться из масок имени файлов. Например, есть у меня маска "melissa clarke", по ней находятся где-то три тысячи файлов и они должны переместиться в папку под названием "melissa clarke". А есть другая маска "*.gif", которая находит в этом каталоге 6 тыс. гифок и они должны переместиться в папку под названием "*.gif". Надеюсь принцип понятен. Как это сделать, самостоятельно в интернете не нашел, так что обращаюсь к вам с помощью, возможно есть способ создать такой скрипт, который позволил бы это реализовать.
Если это получится, то по идее в таком огромном каталоге должно создаться 2000+ подпапок, которые по отдельности будут представлять с себя хранилища файлов, соответствующие одной из масок, так как сами маски суммарно представляют собой 2+ тыс. отдельных единиц. И кстати в целом сам перечень масок занимает собой 24 тыс. знаков, так что хотелось бы чтобы сами маски можно было бы внести в код скрипта, т.к. лимит параметров в настройке инструментов ограничен 2048 знаков. А еще возможна такая ситуация, когда будут такие файлы, названия которых будут соответствовать нескольким маскам из целого перечня масок. В таком случае, пусть такие файлы перемещаются по принципу первенства масок, т.е. перемещаются в папки только по маске, которая в перечне масок стоит наиболее первой. Как-то так. Надеюсь на помощь и заранее спасибо!
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Jul 26, 2016 15:18    Post subject: Reply with quote

Hjkma
Тем с перемещением у нас было жуть как много (в частности). Можно было и не создавать новую.

Имена, на секундочку, не могут содержать *, поэтому именовать таким образом не получится. Нужно искать альтернативный символ. А так ничего сложного, всё тот же принцип, только ещё проще.

Впрочем, я уже нашёл (*﹡⋇⋆×∗⋆). Какой берём?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 15:40    Post subject: Reply with quote

Flasher
Простите, что не создал в этой теме пост. Можно перенести и эту тему удалить. Просто искал по форуме тему как перенести файлы в специальные папки по масково и ничего не нашел, так что решил создать новую.

Насчет символа, предоставляю на ваш выбор. Только про имена я не понял, речь о названиях новых папок? Если так, лучше использовать такой символ, чтобы со всех устройств можно было бы заходить в такие папки.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Jul 26, 2016 15:51    Post subject: Reply with quote

Hjkma
Уже неважно. Пусть тут будет.

И что, мне предлагается все возможные устройства проверить? Very Happy
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 15:52    Post subject: Reply with quote

Flasher
Ну ладно, пусть будет любой символ. Если что, я всегда могу просто путем массового переименования убрать символ с названий папок.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Jul 26, 2016 16:16    Post subject: Reply with quote

Hjkma
Перечитал первый пост и не совсем понял.
В этой одной папке подпапок вообще нет? Т.е. все 500 тыс. файлов скинуты в неё? А смысл? Это создаёт плохие условия для работы файлменеджеров.
Можно было бы и так искать.
Т.е. надо полагать, что и повторных имён нет?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 16:20    Post subject: Reply with quote

Flasher
Конкретно в этой папке подпапок нет. Дело в том, что файлы в этой папке изначательно были из других каталогов и перемещены потом в это место после поиска по маскам по всему компьютеру. Про повторных имён я не понял? Речь об имён файлов? Если да, то нет, названия файлов не идентичны и не повторяются.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Jul 26, 2016 16:22    Post subject: Reply with quote

Hjkma
А папки там же создавать?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Tue Jul 26, 2016 16:29; edited 2 times in total
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 16:26    Post subject: Reply with quote

Flasher
Папку? Или папкИ? Если да, то там же конечно. Еще один момент, Тотал очень долго эту папку открывает, так что хотелось бы чтобы скрипт работал бы с папкой под курсором (чтобы не открывать её)? Это возможно?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11758
Location: Москва

Post (Separately) Posted: Tue Jul 26, 2016 16:30    Post subject: Reply with quote

Hjkma
Исправил. Мин.

Add: Немного потестировать пришлось.
Code:
'=================== VBS ===================
' Переместить файлы из каталога под курсором
' в папки с именами соответствующих им масок
' Параметр: %V
'===========================================
Option Explicit: Dim Filt, Fold, FSO, ShAp, Items, Mask, Name, Path
'===================== Маски файлов через "|" =====================
Filt = "1*.*|*name*|name*.txt|name 1.txt|name 1*.txt|name *1.*|" &_
"*2*|2.txt|name2.txt|name 2.txt|name *2.txt|name 2*.*|name 2.*|" &_
"*3*.txt|name 3.*|name3.txt|name 4.txt|name *4*.txt|*5*|*5*.txt"
'==================================================================
Fold = WScript.Arguments(0)
Set FSO  = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(Fold) Then WScript.Quit
Set ShAp = CreateObject("Shell.Application")
Set Fold = ShAp.NameSpace(Fold)
Set Items = Fold.Items
For Each Mask in Split(Filt, "|")
  Items.Filter 73920, Mask
  If Items.Count Then
    Name = Replace(Mask, "*", ChrW(-246))
    Path = Fold.Self.Path & "\" & Name
    If Not FSO.FolderExists(Path) Then Fold.NewFolder(Name)
    ShAp.NameSpace(Path).MoveHere Items
  End If
Next

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 135

Post (Separately) Posted: Tue Jul 26, 2016 17:09    Post subject: Reply with quote

Flasher
Отлично, все работает как надо! Огромное вам спасибо, ваши скрипты очень меня выручают!
Back to top
View user's profile Send private message
Lex177



Joined: 06 Dec 2016
Posts: 5

Post (Separately) Posted: Tue Dec 06, 2016 13:07    Post subject: Reply with quote

Здравствуйте!

Подскажите пожалуйста как правильно прописать маску для файлов:
05534_151_1_1.jpg
05535_160_1_1.jpg
05535_160_1_2.jpg
05536_162_2_1.jpg
05536_162_2_2.jpg
05536_162_2_3.jpg

Нужно, чтобы все файлы с одинаковым значением до первого подчеркивания попадали в одну папку с одноименным названием (05534, 05535, 05536).
Back to top
View user's profile Send private message
Staniclaw



Joined: 12 Dec 2010
Posts: 517
Location: Ташкент

Post (Separately) Posted: Tue Dec 06, 2016 13:18    Post subject: Reply with quote

Lex177
ИГП, регулярное выражение.
Если там только цифры и подчёркивания, то навскидку так:
Поиск: ^(\d+?)_
Замена: $1\$1_
_________________
Вечному двигателю -- вечные тормоза!..
Back to top
View user's profile Send private message
Lex177



Joined: 06 Dec 2016
Posts: 5

Post (Separately) Posted: Tue Dec 06, 2016 13:44    Post subject: Reply with quote

Да, все фото одного вида.
Не понял что куда вставлять.

Добавлено спустя 3 минуты:

Может быть проще написать, чтобы первые 5 символов были маской и они же названием новой папки?
Только я не знаю как это прописать....
Back to top
View user's profile Send private message
Staniclaw



Joined: 12 Dec 2010
Posts: 517
Location: Ташкент

Post (Separately) Posted: Tue Dec 06, 2016 13:51    Post subject: Reply with quote

Lex177 wrote:
Не понял что куда вставлять.
В окно инструмента группового переименования, который про умолчанию вызывается клавишами Ctrl+M. Там сверху справа есть поля для поиска и замены. Вставьте маски туда и отметьте галочку ''Рег. выраж.''.
_________________
Вечному двигателю -- вечные тормоза!..
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies.    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group