|
|
| Название | 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 |