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