1 (изменено: Barry, 2020-06-07 12:42:15)

Тема: AHK: Рассортировать файлы по одноимённым папкам со сложными условиями.

Здравствуйте, возможно ли, чтобы AutoHotkey раскидал тысячи файлов по папкам, названным по именам файлов?

Нужно, чтобы создавались папки с именем название* и туда помещались одноимённые файлы, но только если название* повторяется более одного раза, т.е. название3 из примера, не должно помещаться в папку. Поэкспериментировав в notepad++, получилась такая регулярка: ^.*?\) и ^.*?\)?\[текст*\], совместить их не получилось. Ещё желательно сохранить все даты у файлов неизменными.

Тысячи файлов с именами такого вида:

цифры (разный текст) название1 - текст2 - много текста
цифры (разный текст) название1 - текст3 - много текста
цифры (разный текст) название1 - текст4 - много текста
цифры (разный текст) название2 - текст5 - много текста
цифры (разный текст) название2 - текст6 - много текста
цифры (разный текст) название3 - текст7 - много текста
цифры (разный текст) [текст2] название1 - текст8 - много текста
цифры (разный текст) [текст3] название1 - текст9 - много текста

2

Re: AHK: Рассортировать файлы по одноимённым папкам со сложными условиями.

Понял, что это слишком сложно, придётся пожертвовать именами файлов и обрезать их, чтобы название* это было только первое слово. Можно ли в таком случае выполнить задачу? Главная проблема в том, что нужно все файлы с одинаковым первым словом закинуть в одну одноимённую папку, а если слово не повторяется более одного раза, то ничего не делать.

3

Re: AHK: Рассортировать файлы по одноимённым папкам со сложными условиями.

Как-то сложно это всё представить без примеров. Напишите подробный примеры: 1) с указанием где какие файлы лежали до; 2) с указанием где эти же фалы должны будут лежать после.

4

Re: AHK: Рассортировать файлы по одноимённым папкам со сложными условиями.

Barry, попытайтесь написать следующий код:
1) Цикл по файлам в папке (Loop).
2) Внутри цикла регуляркой получаете из имени текущего файла в переменную часть, подходящую под шаблон название* (RegExMatch).
3) Там же еще один цикл по файлам в папке, внутри которого считаете сколько у вас файлов содержащих в себе текст в переменной из п.2 (InStr). Если файлов >1, то создаете одноименную папку и перемещаете туда все найденные файлы (FileMove).
4) Переход к следующему файлу в цикле п.1.