Переместить файлы по маске в папки, соответствующие маскам
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Переместить файлы по маске в папки, соответствующие маскам Author: Hjkma PostPosted: Tue Jul 26, 2016 14:20
    —
Здравствуйте.
Ищу способ, который позволил бы перемещать файлы по маске в специальные новосозданные папки. Причем так чтобы перемещались по масково по отдельности в папки, т.е. файлы, соответствующие одной маской, отправляются в одну папку, а файлы соответствующие другой маске, отправляются в другую папку и т.д.
Дело в том, что у меня в одной папке есть около 500+ тыс. файлов, собранные со всех каталогов по поиску по маскам. И мне потребуется отсортировать огромную кучу файлов так, чтобы они переместились в соответствующие их маскам каталоги, причем названия каталогов должны браться из масок имени файлов. Например, есть у меня маска "melissa clarke", по ней находятся где-то три тысячи файлов и они должны переместиться в папку под названием "melissa clarke". А есть другая маска "*.gif", которая находит в этом каталоге 6 тыс. гифок и они должны переместиться в папку под названием "*.gif". Надеюсь принцип понятен. Как это сделать, самостоятельно в интернете не нашел, так что обращаюсь к вам с помощью, возможно есть способ создать такой скрипт, который позволил бы это реализовать.
Если это получится, то по идее в таком огромном каталоге должно создаться 2000+ подпапок, которые по отдельности будут представлять с себя хранилища файлов, соответствующие одной из масок, так как сами маски суммарно представляют собой 2+ тыс. отдельных единиц. И кстати в целом сам перечень масок занимает собой 24 тыс. знаков, так что хотелось бы чтобы сами маски можно было бы внести в код скрипта, т.к. лимит параметров в настройке инструментов ограничен 2048 знаков. А еще возможна такая ситуация, когда будут такие файлы, названия которых будут соответствовать нескольким маскам из целого перечня масок. В таком случае, пусть такие файлы перемещаются по принципу первенства масок, т.е. перемещаются в папки только по маске, которая в перечне масок стоит наиболее первой. Как-то так. Надеюсь на помощь и заранее спасибо!

#2:  Author: FlasherLocation: Москва PostPosted: Tue Jul 26, 2016 15:18
    —
Hjkma
Тем с перемещением у нас было жуть как много (в частности). Можно было и не создавать новую.

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

Впрочем, я уже нашёл (*﹡⋇⋆×∗⋆). Какой берём?

#3:  Author: Hjkma PostPosted: Tue Jul 26, 2016 15:40
    —
Flasher
Простите, что не создал в этой теме пост. Можно перенести и эту тему удалить. Просто искал по форуме тему как перенести файлы в специальные папки по масково и ничего не нашел, так что решил создать новую.

Насчет символа, предоставляю на ваш выбор. Только про имена я не понял, речь о названиях новых папок? Если так, лучше использовать такой символ, чтобы со всех устройств можно было бы заходить в такие папки.

#4:  Author: FlasherLocation: Москва PostPosted: Tue Jul 26, 2016 15:51
    —
Hjkma
Уже неважно. Пусть тут будет.

И что, мне предлагается все возможные устройства проверить? Very Happy

#5:  Author: Hjkma PostPosted: Tue Jul 26, 2016 15:52
    —
Flasher
Ну ладно, пусть будет любой символ. Если что, я всегда могу просто путем массового переименования убрать символ с названий папок.

#6:  Author: FlasherLocation: Москва PostPosted: Tue Jul 26, 2016 16:16
    —
Hjkma
Перечитал первый пост и не совсем понял.
В этой одной папке подпапок вообще нет? Т.е. все 500 тыс. файлов скинуты в неё? А смысл? Это создаёт плохие условия для работы файлменеджеров.
Можно было бы и так искать.
Т.е. надо полагать, что и повторных имён нет?

#7:  Author: Hjkma PostPosted: Tue Jul 26, 2016 16:20
    —
Flasher
Конкретно в этой папке подпапок нет. Дело в том, что файлы в этой папке изначательно были из других каталогов и перемещены потом в это место после поиска по маскам по всему компьютеру. Про повторных имён я не понял? Речь об имён файлов? Если да, то нет, названия файлов не идентичны и не повторяются.

#8:  Author: FlasherLocation: Москва PostPosted: Tue Jul 26, 2016 16:22
    —
Hjkma
А папки там же создавать?


Last edited by Flasher on Tue Jul 26, 2016 16:29; edited 2 times in total

#9:  Author: Hjkma PostPosted: Tue Jul 26, 2016 16:26
    —
Flasher
Папку? Или папкИ? Если да, то там же конечно. Еще один момент, Тотал очень долго эту папку открывает, так что хотелось бы чтобы скрипт работал бы с папкой под курсором (чтобы не открывать её)? Это возможно?

#10:  Author: FlasherLocation: Москва PostPosted: Tue Jul 26, 2016 16:30
    —
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

#11:  Author: Hjkma PostPosted: Tue Jul 26, 2016 17:09
    —
Flasher
Отлично, все работает как надо! Огромное вам спасибо, ваши скрипты очень меня выручают!

#12:  Author: Lex177 PostPosted: Tue Dec 06, 2016 13:07
    —
Здравствуйте!

Подскажите пожалуйста как правильно прописать маску для файлов:
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).

#13:  Author: StaniclawLocation: Ташкент PostPosted: Tue Dec 06, 2016 13:18
    —
Lex177
ИГП, регулярное выражение.
Если там только цифры и подчёркивания, то навскидку так:
Поиск: ^(\d+?)_
Замена: $1\$1_

#14:  Author: Lex177 PostPosted: Tue Dec 06, 2016 13:44
    —
Да, все фото одного вида.
Не понял что куда вставлять.

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

Может быть проще написать, чтобы первые 5 символов были маской и они же названием новой папки?
Только я не знаю как это прописать....

#15:  Author: StaniclawLocation: Ташкент PostPosted: Tue Dec 06, 2016 13:51
    —
Lex177 wrote:
Не понял что куда вставлять.
В окно инструмента группового переименования, который про умолчанию вызывается клавишами Ctrl+M. Там сверху справа есть поля для поиска и замены. Вставьте маски туда и отметьте галочку ''Рег. выраж.''.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group