Nextension

Название Nextension
Имя файла (*.txt) Nextension.txt
Описание Перемещает курсор к первому файлу со следующим (по алфавиту) расширением. Может выделить все такие файлы
Автор Вахмурка
Параметры ("%P", "%E", выделение)
Вызываемые плагины win, miscplugin, vec, file
Иконка
Версия 2.1
Дата обновления 15.03.2010
args Path, Ext, Sel
static hwnd = win.handle("c=TTOTAL_CMD")
static Exepath = win.exepath(hwnd)
static Quote = esc(?+\"+, ?+\+)

if(not Ext) do
	win.sendmessage(hwnd, 0x400+51, 2050, 0)
	Ext = "!!!"
endif

static Counter, PrevPath
local Str, Type, i


if(Counter && PrevPath == Path)
	jump SecondCall

if(vec.exists(v)) do
	vec.destroy(v)
	Counter = ""
endif

PrevPath = Path

local Report = miscplugin.tempfilename()
Str = "/c dir " ++ Path ++ " /a:-d /o:e /b > " ++ Report
local ExitCode = file.runwait(0, "cmd", Str, "", "hide")

if(ExitCode) do
	messagebox("ok error", "File list not created", "CMD error")
	quit
endif

Str = file.readall(Report)

v = vec.createfromlines(Str, 1, 1)
if(v <= 0) do
	messagebox("ok error", "Vector not created", "VEC plugin error #1")
	quit
endif

for each Str in v
	if(not Str)
		continue

	Type = file.type(Str)
	if(Counter) do
		flag set 1
		for(i = 0; i < Counter; i++)
			if(Type == file.type(v[i])) do
				flag clear 1
				break
			endif
		endfor

		if(pproflag(1)) do
			vec.insert(v, Counter, Str)
			Counter++
		else
			if(stricoll(v[i], Str) == 1)
				v[i] = Str

		endif
	else
		v[0] = Str
		Counter++
	endif
endfor

@SecondCall

for(i = 0; i < Counter - 1; i++)
	if(Ext != file.type(v[i]))
		continue

	Str = v[i + 1]
	do(Exepath,"/O /S /L=" ++ Quote ++ Path ++ Str ++ Quote)
	if(Sel) do
		win.sendmessage(hwnd, 0x400+51, 524, 0)
		win.sendmessage(hwnd, 0x400+51, 527, 0)
	endif

	break
endfor

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

При изучении нового набора файлов (скажем, на CD с софтом) бывает удобно смотреть не на имена файлов, а на их расширения. Однако, если файлов в директории много, поиск первого файла со следующим по алфавиту расширением может быть делом нелегким.

Перед запуском скрипта удобно рассортировать файлы по расширению. Если третий параметр отсутствует, равен "" или "0", курсор будет просто перемещен к первому файлу со следующим расширением. Любое другое (например, "1") значение, кроме того, выделяет все такие файлы. Тогда можно легко узнать их количество и суммарный вес.


На главную Все о Total Commander PowerPro Все скрипты