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 Previous  1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Hjkma



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sat Jul 09, 2016 19:19    Post subject: Reply with quote

Здравствуйте. По работе со скриптом появилась пара вопросов.
1) Возможно ли расширить лимит знаков в поле параметров в настройках панели инструментов? Ныне этот лимит ограничен в 2048 символов, а этого мне теперь уже недостаточно. А если никак, то возможно ли чтобы скрипт работал с масками по списку в текстовом документе? Или например отредактировать скрипт и прямо в тексте скрипта вставить нужные маски?
2) Появилась теперь нужда узнать, какие маски часто встречаются в названиях находимых файлов и какие редко встречаются, то есть нужно определить какие маски наиболее "результативные", а какие - менее. Если этот скрипт определяет кол-ство файлов в таких-то папках, находимых по маскам, и сортирует в списке эти самые папки по кол-ству находимых файлов в них, то возможно ли отредактировать скрипт, чтобы он делал почти то же самое, но вместо названия папок скрипт теперь бы определял "рейтинг масок", где в списке наверху будут маски, по которым файлы наиболее находятся, а внизу будут идти маски, файлы по которым меньше всех находятся?

Спасибо.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Jul 09, 2016 20:13    Post subject: Reply with quote

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



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sat Jul 09, 2016 21:15    Post subject: Reply with quote

Flasher
1) Ну получится втиснуть в лучшем случае масок на около 4000+ знаков. А мне нужно гораздо больше. Если я правильно понял о чем речь.
2)
Quote:
Возможно. Только нужно прояснить, найденные по маске файлы касаются всех структуры или каждой его папки в отдельности, как и сейчас?

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



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

Post (Separately) Posted: Sat Jul 09, 2016 21:24    Post subject: Reply with quote

Hjkma
1) Ясно. Тогда переносим параметр в код: под шапкой пишем
Code:
Filt = "<маски>"
, а в 24 строке Filt вместо WScript.Arguments(0).
2. И чего с ними делать? Плюсовать - нет? Не ясен замысел. Как называются папки, содержащие файлы, знать не надо, а число файлов неизвестно в каких папках - надо? КПД тут в чём?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sat Jul 09, 2016 21:42    Post subject: Reply with quote

Flasher
1) Спасибо. Еще нужно узнать, как маски правильно разделяются, а то у меня выдало ошибку
Quote:
Строка: 8. Символ: 26. Ошибка: Предполагается наличие окончания инструкции

2) Ну я ведь объяснил, мне нужно узнать самые "результативные" маски. То есть сколько файлов находятся по каким маскам. Если к примеру, маска "ресторан" находит 112 файлов, то хотелось бы, чтобы в списке это было показано как "ресторан" - 112 файлов. Также как в оригинальном скрипте, только вместо папок в выводимом списке - скрипт в этом списке сортирует сами маски.

апд.
Сами дублирующие файлы - можно плюсовать, проблем нет.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Jul 09, 2016 21:59    Post subject: Reply with quote

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



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sat Jul 09, 2016 22:06    Post subject: Reply with quote

1)
Quote:
Filt = "*Melissa Clarke*";"*Mel Clarke*";"*Clarke*";"*Lucy Pinder*";"*Pinder*";"*Holly Peers*";"*Peers*";"*Lucy Vixen*";"*Lucy Collet*";"*lucy v*";

Это не все маски, тут только 8 строка
2) Ну имена папок оставлять не обязательно, достаточно только имена масок и кол-ство находимых при них файлов.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Jul 09, 2016 22:28    Post subject: Reply with quote

1) Ну, здрасьте. А зачем внутренние кавычки? В шапке пример имеет только наружные. И ; на конце там совсем ни к чему.
Code:
Filt = "*Melissa Clarke*;*Mel Clarke*;*Clarke*;*Lucy Pinder*;*Pinder*;*Holly Peers*;*Peers*;*Lucy Vixen*;*Lucy Collet*;*lucy v*"

Для того, чтобы было удобно редактировать, можно писать в несколько строк. Пример (в качестве разделителя для нового скрипта возьмём "|"):
Code:
Filt = "name.txt|name 1.txt|name 1*.txt|name *1.*|" &_
"2.txt|name2.txt|name 2.txt|name *2.txt|name 2*.*|" &_
"3.txt|name 3.*|name3.txt|name 4.txt|name *4*.txt"

B в Sub-процедуре для новых условий меняем
Code:
  Items.Filter 73920, WScript.Arguments(0)
  If Items.Count Then
    Dict.AddNew : Dict("Name") = FSO.GetFileName(Fold)
    Dict("Count") = Items.Count
  End If : Items.Filter 73888, "*"
на
Code:
  For Each F in Split(Filt, "|")
    Items.Filter 73920, F
    If Items.Count Then
      Dict.AddNew : Dict("Name") = F
      Dict("Count") = Items.Count
    End If
  Next : Items.Filter 73888, "*"
Сам пока не тестировал. Хотя нет, тут кое-что ещё нужно. Сейчас...
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sat Jul 09, 2016 23:06    Post subject: Reply with quote

Flasher
Благодарю. Поменял маски на
Quote:
Filt = "*Melissa Clarke*;*Mel Clarke*;*Clarke*;*Lucy Pinder*"

и сработал оригинальный скрипт. А разделитель "|" у меня не сработал, нету ни сообщений об ошибке, нету ничего. Оформлял в виде:
Quote:
"*Melissa Clarke*|*Mel Clarke*|*Clarke*|*Lucy Pinder*"

Наверное в чем-то ошибся?
И в связи с этим проверить работоспособность новых условий не могу, если вношу изменения и у масок стоит разделитель "|", то совершенно ничего не происходит, а если стоит разделитель ";", то появляется ошибка
Quote:
Строка: 24 Символ: 3 Ошибка: Неопознанная ошибка

А строка 24 у меня такая
Quote:
Set Items = ShAp.NameSpace(Fold).Items
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jul 10, 2016 01:59    Post subject: Reply with quote

Мне пришлось отлучиться.
24 строка ранее указывалась относительно исходника. Поэтому вариант "у меня" не рассматривается. Новый разделитель касается нового задания (об этом же чётко написано!).
 Вот так будет выглядеть скрипт:

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


Last edited by Flasher on Wed Jul 13, 2016 22:55; edited 6 times in total
Back to top
View user's profile Send private message
Hjkma



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sun Jul 10, 2016 02:52    Post subject: Reply with quote

Flasher
Опять что-то пошло не так. Выскакивает окно ошибки
Quote:
Строка: 27 Символ: 30 Ошибка: В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру

Вот эта строка, на которую скрипт ругается
Quote:
Num = Dict.Item(F) : RecS(Num) = CLng(RecS(Num)) + Items.Count

Пробовал так и эдак вставлять маски, все равно та же ошибка. Даже попробовал скопировать код скрипта как есть, не меняя в нем ничего и создал в одном папке текстовый файл "name 1.txt", все равно вызывается то же окно ошибки. Ну ладно, пойду спать, может завтра день будет мудренее.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jul 10, 2016 03:08    Post subject: Reply with quote

Hjkma
Видел ошибку. Дело не в масках. У себя вроде исправил, но что-то счётчик криво подсчитывает. Немного покумекаю.

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



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Sun Jul 10, 2016 14:35    Post subject: Reply with quote

Flasher
Все работает. Правда что-то оно долго считает - на папку с 55+ тыс. файлов с заданными масками на 20 тыс. знаков скрипт затратил 1 час. А впереди еще папка с 300 тысяч. файлов... Ну ничего, главное работоспособность. Smile Спасибо за вашу помощь, очень ценю ваше время и силы, которые вы затрачиваете на добровольную помощь. Долгих вам лет, хорошего здоровья и удачи во всех делах! Вы хороший человек.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jul 10, 2016 16:46    Post subject: Reply with quote

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



Joined: 18 Apr 2015
Posts: 178

Post (Separately) Posted: Wed Jul 13, 2016 21:46    Post subject: Reply with quote

Flasher
Новый исправленный скрипт у меня выдает ошибку:
Quote:
Строка: 17 Символ: 14 Ошибка: Предполагается наличие 'Then'

Маски задал ровно те же самые, при которых работает предыдущий вариант скрипта, путь запуска задан пустой, но вызывается только эта ошибка.
Строка 17, на что ругается скрипт, вот эта
Quote:
If Dict.Count
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4

 
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