![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] необычный поиск дубликатов |
|
|
Любой язык - [решено] необычный поиск дубликатов
|
Ветеран Сообщения: 558 |
здравствуйте, реально ли осуществить вот такую задачку..
я хочу найти все файлы, в которых присутствуют энной или более кол-во одинаковых символов, т.е. я должен указать только цифру, например 5. а мне должны показаться (или в тхт или на экране, без разницы как), группы файлов в имени которых (не считая расширения) присутствует части слова из 5 или более одинаковых символов. А также, чтобы можно было указать слова для игнора (которые при нахождении в нескольких файлах не будут поводом принимать их за дубликаты, если таковые найдутся) пример у меня в папке куча папов.. в этих папках кучи файлов для примера возьму не множко: mydomain.com_хорошее кино.avi mydomain.com_хорошая комедия.wmv mydomain.com_камедиклаб.avi mydomain.com_сигареты камел.avi mydomain.com_стивен сигал.wmv я указываю верхнюю папку в которой нужно сделать проверку............. сами файлы находятся во вложенных папках, папки, которой я указал указываю количество символов 5 и более, указываю в списке игноров всего одно слово "mydomain.com_". такие должны быть результаты: хорошее кино.avi хорошая комедия.wmv если задал 4 и более, а слово игнор "mydomain.com_", результаты в виде группы хорошее кино.avi хорошая комедия.wmv ---------------------------------------------------- сигареты камел.avi стивен сигал.wmv если задал 3 и более, а слово игнор "mydomain.com_": хорошее кино.avi хорошая комедия.wmv ---------------------------------------------------- сигареты камел.avi стивен сигал.wmv ----------------------------------------------------- хорошая комедия.wmv камедиклаб.avi ---------------------------------------------------- камедиклаб.avi сигареты камел.avi Если можно сделать проще посредством каких - то программ, подскажите, пожалуйста каких именно, в тотале коммандере, есть поиск посредством плагина, может существует такой плагин ![]() |
|
Отправлено: 16:05, 28-03-2015 |
Ветеран Сообщения: 1759
|
PowerShell: Если такой вариант сортировки подойдет, то можно прицепить обработку файлов
$strings = 'хорошее кино', 'хорошая комедия', 'камедиклаб', 'сигареты камел', 'стивен сигал', 'хорек и камел' 3,4,5 | foreach { $patterns = foreach ($s in $strings) { for ($i = 0; $i -le ($s.length - $_); $i++) { $s.substring($i,$_) }} "$($_):" foreach ($p in ($patterns | sort -unique)) { $res = $strings | where { $_ -match ".*${p}.*" } | foreach { $_ -replace $p,"[${p}]" } if ($res.count -ge 2) { $res; '' } }} |
Отправлено: 20:26, 28-03-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, ноги у темы здесь растут: Прочие - не стандартный поиск дубликатов файлов.
|
Отправлено: 20:38, 28-03-2015 | #3 |
Ветеран Сообщения: 1759
|
Iska, там вроде не связано со скриптами. Ну ладно, что человек не делает, все делает для себя. Потренировался. Я кроме этого раздела никуда больше даже не заглядываю
|
Отправлено: 20:53, 28-03-2015 | #4 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Foreigner, спасибо, хочу протестировать, а у меня экран сразу изчезает.. т.е. нажимаю на файле правой кнопкой, "выполнить power shell", потом на синем фоне все быстро пробегает и окно закрывается
и еще вопросик, а можно прописать слова для игнора и чтобы расширение игнорировало? дело в том, что на многих файлах стоит как префикс название одного и того же домена, но эти файлы не являются дубликатами |
|
Последний раз редактировалось Alexander_88, 28-03-2015 в 21:46. Отправлено: 21:30, 28-03-2015 | #5 |
Ветеран Сообщения: 1759
|
Цитата Alexander_88:
или запишите результат в файл, исправьте последнюю строку: Цитата Alexander_88:
|
||
Отправлено: 00:18, 29-03-2015 | #6 |
Ветеран Сообщения: 1759
|
$notparse = 'mydomain.com_|mydomain.org_|www.ya.ru_' # не учитывается при поиске $search_len = 4 # длина подстроки $files = get-childitem "D:\Test" -recurse | where { -not $_.psiscontainer } # D:\Test -- путь к папке $patterns = foreach ($f in $files) { $f = $f.basename -replace $notparse for ($i = 0; $i -le ($f.length - $search_len); $i++) { $f.substring($i,$search_len) }} return & { foreach ($p in ($patterns | sort -unique)) { $res = $files | where { ($_.basename -replace $notparse) -match ".*${p}.*" } | foreach { "[${p}]: " + "$_" } if ($res.count -ge 2) { $res; '' } }} | set-content "D:\Test\result.txt" |
Отправлено: 02:27, 29-03-2015 | #7 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать Foreigner, спасибо огромное.. оказывается я плохо пример сверху привел, там на самом деле гораздо больше совпадений))
только у меня вопросик: 1 - если у меня окно не изчезает и куча красного понаписано, мерцает, потом раз.. и останавливается (но окно не закрывается), я закрыл сам, открыл результаты, там уже записалось что-то, может нужно все же дождаться завершения, пока само закроется? (я прикрепил скрин) 2 - можно сделать так, чтобы не происходило слияние имени файла, если между ними есть слово игнор, а то получается, что вырезается слово игнор, и то, что было до и после этого слова сливается и принимается за дубликат пример: я указал в игнор rufig_ tort_ символов сделал 7 одно из совпадений [0OPUD-1]: 00030rufig_OPUD-179_site.com.wmv [0OPUD-1]: 00010tort_OPUD-181_site.com.wmv 3 - интересно откуда могло взяться вот такое?: символы 6 [[FHD]C]: 00001tort_DCN-047_site.com.wmv [[FHD]C]: DCN-043.avi в принципи все правильно, 6 символов есть, но почему в замене такое написано? я попробовал переместить в другую папку отдельно эти два файла, тогда получилось все нормально [DCN-04].......... может ли скрипт записать в квадратные скобки что - то из соседних файлов? (просто есть файл [FHD]CORE-026.mkv) |
Последний раз редактировалось Alexander_88, 16-10-2015 в 09:28. Отправлено: 09:09, 29-03-2015 | #8 |
Ветеран Сообщения: 1759
|
Цитата Alexander_88:
Цитата Alexander_88:
Пока попробуйте так: $notparse = 'mydomain.com_|mydomain.org_|www.ya.ru_|\[игнор\]' # Если присутствуют'[' и ']', то их надо экранировать '\[' и '\]' $search_len = 7 $files = get-childitem .\test -recurse | where { -not $_.psiscontainer } $patterns = foreach ($f in $files) { $f = $f.basename -replace $notparse for ($i = 0; $i -le ($f.length - $search_len); $i++) { $f.substring($i,$search_len) -replace '(\[|\])','\$1' }} return & { foreach ($p in ($patterns | sort -unique)) { $res = $files | where { ($_.basename -replace $notparse) -match ".*${p}.*" } | foreach { "[${p}]: " + "$_" } if ($res.count -ge 2) { $res -replace '\\'; '' } }} | sc 1.txt |
||
Отправлено: 10:36, 29-03-2015 | #9 |
Ветеран Сообщения: 558
|
Профиль | Отправить PM | Цитировать сейчас нету fhd...., спасибо
![]() Цитата Foreigner:
или можно прописать в игнор случайные символы?, к примеру *rufig_, где * это случайные цифры перед словом.., я даже могу их кол-во задать, их будет 5, например #####rufig_ |
|
Отправлено: 13:34, 29-03-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - не стандартный поиск дубликатов файлов | Alexander_88 | Программное обеспечение Windows | 7 | 28-03-2015 15:45 | |
CMD/BAT - Удаление дубликатов. | evgon | Скриптовые языки администрирования Windows | 11 | 18-09-2014 21:10 | |
Поймал необычный вирус | microon | Лечение систем от вредоносных программ | 14 | 20-12-2012 13:06 | |
Любой язык - [решено] Поиск дубликатов | Baranius | Скриптовые языки администрирования Windows | 14 | 07-06-2012 12:22 | |
Hare (необычный твикер) | Ser6720 | Программное обеспечение Windows | 7 | 15-04-2006 01:38 |
|