RenAncestry

Название RenAncestry.htm
Имя файла (*.txt) RenAncestry.txt
Описание Переименовывает файлы, используя имя родительской директории любого уровня
Автор Вахмурка
Параметры ("%L", Шаблон, Разделитель)
Вызываемые плагины file
Иконка
Версия 1.0
Дата обновления 01.03.2009
args List, Template, Delim
local fh = file.open(List, "r")
local Slash = "\"
local Path, Name, i, Dir, Str, Depth, NewName, Ext

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) - 1
			NewName = Name
			for(i = 1; i <= Depth; i++)
				if(index(Template, i)) do
					Dir = word(Path, Depth - i + 2, Slash)
					NewName = Dir ++ Delim ++ NewName
				endif
			endfor
			file.rename(Path ++ Name ++ Ext, Path ++ NewName ++ Ext)
		endif
	endfor
else
	messagebox("ok error", "File not opened", "FILE plugin error")
	quit
endif

file.close(fh)

Комментарии:

Допустим, имеется файл с именем c:\One\Two\Three\Four\name.txt. Требуется переименовать его так, чтобы в имени файла фигурировало имя родительской директории того или иного уровня.

Для первого уровня (отсчет ведется от имени файла к корню) задача легко решается через инструмент группового переименования (MRT) Total Commander с помощью, например, маски [P]-[N] - файл получит имя Four-name.txt. Знак "минус" используется в качестве разделителя.

Далее, если мы хотим "вспомнить" имя родительской директории более высокого, второго уровня, родителя родителя, то есть дедушку, следует использовать маску [G][N], где буква "G" и означает "grandfather" - "дедушка". Файл получит имя Threename.txt.

Заставить сам MRT вспомнить о более далеких предках нельзя. А вот заставить его привлечь плагины - можно. Мне удалось найти единственный плагин, позволяющий вспоминать предков дальше второго колена: filex и его функцию GtGrandPaDir. Так что маска [=filex.GtGrandPaDir]$[N] позволит получить файл Two$name.txt.

Но двигаться глубже в генеалогию файла не удается, а мне время от времени бывает необходимо переименовывать файлы с включением в новое имя родителя четвертого и более высоких уровней.

Первый параметр скрипта всегда "%L". Второй - шаблон переименования. Он состоит из цифр (вообще говоря, в произвольном порядке), каждая из которых соответствует порядку предка, причем единице соответствует родительская директория. Третий, необязательный, параметр - разделитель.

Например, вызвав скрипт с параметрами ("%L", "13", "%"), получим фал с тем же путем и именем "Two%Four%name.txt". А вот строка параметров ("%L", "243", "-") даст новый файл "One-Two-Three-name.txt".


На главную Все о Total Commander PowerPro PowerPro & Total Commander