|
Название | RenAncestry.htm |
Имя файла (*.txt) | RenAncestry.txt |
Описание | Переименовывает файлы, используя имя родительской директории любого уровня |
Автор | Вахмурка |
Параметры | ("%L", Шаблон, Разделитель) |
Вызываемые плагины | file |
Иконка | |
Версия | 1.1 |
Дата обновления | 18.04.2019 |
args List, Template, Delim local fh = file.open(List, "r") static Slash = "\" local LT = length(Template) local Path, Name, i, Dir, Str, Depth, NewName, Ext, Char if(fh > 0) do for(not(file.eof(fh))) Str = file.readstring(fh) if(Str) do Path = file.folder(Str) ++ Slash Name = file.name(Str) Ext = "." ++ file.type(Str) Depth = word(Path, 0, Slash) NewName = Name for(i = LT; i > 0; i--) Char = Template[i - 1] Dir = word(Path, Depth - Char + 1, Slash) NewName = Dir ++ Delim ++ NewName endfor endif file.rename(Path ++ Name ++ Ext, Path ++ NewName ++ Ext) endfor else messagebox("ok error", "File not opened", "FILE plugin error") endif file.close(fh)
Допустим, имеется файл с именем c:\One\Two\Three\Four\name.ext. Требуется переименовать его так, чтобы в имени файла фигурировало имя родительской директории того или иного уровня.
Для первого уровня (отсчет ведется от имени файла к корню) задача легко решается через инструмент группового переименования (MRT) Total Commander с помощью, например, маски [P]-[N] – файл получит имя Four-name.ext. Знак "минус" используется в качестве разделителя.
Далее, если мы хотим "вспомнить" имя родительской директории более высокого, второго уровня, родителя родителя, то есть дедушку, следует использовать маску [G][N], где буква "G" и означает "grandfather" – "дедушка". Файл получит имя Threename.ext.
Заставить сам MRT вспомнить о более далеких предках нельзя. А вот заставить его привлечь плагины - можно. Мне удалось найти единственный плагин, позволяющий вспоминать предков дальше второго колена: filex и его функцию GtGrandPaDir. Так что маска [=filex.GtGrandPaDir]$[N] позволит получить файл Two$name.ext.
Но двигаться глубже в генеалогию файла не удается, а мне время от времени бывает необходимо переименовывать файлы с включением в новое имя родителя четвертого и более высоких уровней.
Первый параметр скрипта всегда "%L". Второй - шаблон переименования. Он состоит из цифр, каждая из которых соответствует порядку предка, причем единице соответствует текущая директория. Третий, необязательный, параметр - разделитель.
Например, вызвав скрипт с параметрами ("%L", "13", "%%"), получим фал с тем же путем и именем "Four%Two%name.ext" (знак процента надо указывать дважды). А вот строка параметров ("%L", "243", "-") даст новый файл "Three-One-Two-name.ext".
На главную | Все о Total Commander | PowerPro | Все скрипты |