|
Название | Join Subdirectories |
Имя файла (*.txt) | JoinSubDirs.txt |
Описание | Копирует (и переименовывает) файлы из дочерних директорий в родительскую |
Автор | Вахмурка |
Параметры |
("%L", "%P") или ("%L", "%P", "string") |
Вызываемые плагины | file, osd |
Иконка | |
Версия | 1.1 |
Дата обновления | 16.06.2014 |
local fh = file.open(arg(1), "r") local Str, Dir, Par local Qu = esc(?+\"+, ?+\+) osd.show("Wait...", "INFINITE", "48", "Arial Cyr", "-1", "255 000 000") if(fh > 0) do for(not(file.eof(fh))) Str = file.readstring(fh) if(Str) do if(arg(0) == 3) do ;Sub_ParsePath - имя скрипта ParsePath; Dir = arg(2) ++ runfile.Subs\Sub_ParsePath(Str, 1) ++ arg(3) ;Sub_MoveFile - имя скрипта MoveFile; Par = "runfile.Subs\Sub_MoveFile(" ++ Qu ++ "|" ++ Qu ++ ", Dir)" file.allfiles(Str, Par) else Par = Str ++ "*.*" if(file.move(Par, arg(2), 1) != "1") do file.close(fh) quit endif endif file.delete(remove(Str, -1)) endif endfor else messagebox("ok error", "File not opened", "FILE plugin error") osd.hide quit endif file.close(fh) win.sendmessage(win.handle("c=TTOTAL_CMD"), 0x400+51, 540, 0) osd.show("Ready!", "1000", "48", "Arial Cyr", "-1", "000 255 000") osd.hide
Пусть есть следующая структура директорий:
Folder1
File1.ext
File2.ext
Folder2
File3.ext
File4.ext
Первые два параметра скрипта всегда ("%L", "%P"). Если третий отсутствует, то скрипт просто перемещает файлы из дочерних директорий в текущую, и затем удаляет пустые дочерние. Иными словами, после выделения в группу директорий Folder1 и Folder2 и запуска скрипта с параметрами ("%L", "%P") получим следующую структуру:
File1.ext
File2.ext
File3.ext
File4.ext
Если есть уверенность (или подозрение), что среди файлов в дочерних директориях имеются одноименные, можно задать третий параметр. Тогда имя файла будет иметь вид:
имя_папки + третий_параметр + имя_файла
Символ + означает слияние (конкатенацию). Например, если параметры скрипта ("%L", "%P", ""), структура будет такой:
Folder1File1.ext
Folder1File2.ext
Folder2File3.ext
Folder2File4.ext
А при параметрах ("%L", "%P", "'s child "):
Folder1's child File1.ext
Folder1's child File2.ext
Folder2's child File3.ext
Folder2's child File4.ext
Того же результата можно достичь с помощью MultiRename Tool, задав маской [P][N], воспользовавшись branch view и удалив дочерние директории вручную. Но эти операции не только отнимут много времени, но и чреваты неприятностями. Скрипт позволяет проделать все одним щелчком.
На главную | Все о Total Commander | PowerPro | PowerPro & Total Commander |