ClipFileList

Название ClipFileList
Имя файла (*.txt) ClipFileList.txt
Описание Копирует в буфер имена файлов. Продвинутая замена командам Total Commander с номерами 2007-2009, 2017-2018, 2029. Имеет больше функций, чем утилита List2Clip
Автор Вахмурка
Параметры ("%L", "n|p|o|e|f|s|q", "глубина", "слэш", "префикс", "суффикс", "кавычки")
(см. комментарии)
Вызываемые плагины file, ini, vec, clip
Иконка зависит от параметров
Версия 1.3
Дата обновления 20.08.17

local fh = file.open(arg(1), "r")
local Str, Counter, What, Depth, i, j, Path
static Quote = esc(?+\"+, ?+\+)
local Before = arg(5)
local After = arg(6)
local QuoteString = arg(7)

if(QuoteString != "") do
	Before = replacechars(Before, QuoteString, Quote)
	After = replacechars(After, QuoteString, Quote)
endif

if(fh) do
	for each Str in fh
		if(Str)
			Counter++

	endfor
else
	messagebox("ok error", "File not opened", "FILE plugin error")
	quit
endif

What = case("lower", arg(2))
Depth = ifelse(miscplugin.is_int(arg(3)) == "1", arg(3), 0)
file.restart(fh)

local v = vec.create(Counter)
if(not v) do
	messagebox("ok error", "Vector not created", "VEC plugin error")
	quit
endif


for(i = 0; i < Counter; i++)
	Str = file.readstring(fh)

	if(Depth) do
;Sub_ParsePath - имя скрипта ParsePath;
		Path = runfile.Subs\Sub_ParsePath(Str, Depth)
		Path ++= "\"
	else
		Path = file.folder(Str) ++ "\"
	endif

	switch (What)
		case "n"
			v[i] = file.nametype(Str)
			break
		case "f"
			v[i] = Path ++ file.nametype(Str)
			break
		case "p"
			v[i] = remove(Path, -1)
			break
		case "o"
			v[i] = file.name(Str)
			break
		case "e"
			v[i] = file.type(Str)
			break
		case "s"
			v[i] = file.size(Str)
			break
		case "q"
			v[i] = Path ++ file.name(Str)
			break
		case "o"
			v[i] = file.name(Str)
			break
		case else
			messagebox("ok error", "Invalid key " ++ Quote ++ What ++ Quote, "ClipFileList Script")
			quit
	endswitch

	if(arg(4) != "")
		v[i] = replacechars(v[i], "\", arg(4))

	v[i] = Before ++ v[i] ++ After
endfor

file.close(fh)

Str = vec.makelines(v)
clip.set(Str)

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

Утилита List To Clipboard, как говорится в описании, является "улучшением" следующих команд:

Я долгое время пользовался List2Clip, хотя кое-чем она меня все равно не устраивала.

Сразу скажу, в чем предлагаемый скрипт проигрывает List2Clip - он не умеет работать с сетевыми путями. Дело в том, что мой компьютер не подключен даже к локальной сети, не говоря о глобальной, так что отлаживать сетевые команды мне просто не на чем. Второе - он не умеет заменять "что угодно" на "что-нибудь" - просто потому, что у меня никогда не возникало такой необходимости. Возникнет - допишу.

Теперь - в чем List2Clip проигрывает скрипту. Во-первых, List2Clip не работает с кавычками, а мне иногда это нужно. Во-вторых, List2Clip не умеет копировать вес файла, а мне это однажды понадобилось.

Рассмотрим работу скрипта на примере гипотетического файла c:\One\Two\Three\name.ext весом 123 байта. Допустим, мы ставим курсор на файл и запускаем скрипт. Здесь и далее - все примеры касаются одного файла, то есть случая, когда ничего не выделено, но скрипт работает и для списка, когда выделено несколько файлов.

Первый параметр скрипта всегда "%L". Второй может принимать одно из значений (в любом регистре):

 Второй параметр  Результат
"n"  name.ext
"p"  c:\One\Two\Three
"o"  name
"e"  ext
"f"  c:\One\Two\Three\name.ext 
"s"  123
"q"  c:\One\Two\Three\name

Третий параметр - "глубина пути" - количество уровней поддиректорий, считая от текущей в направлении корня. Третий параметр имеет значение, только если второй равен "p", "f" или "q", то есть подразумевает копирование пути. Если третий параметр равен "", нулю или превышает "расстояние" до корня (в нашем примере это 4), или, наконец, не является целым числом, то результат тот же, что и при отсутствии параметра. Однако, если в скрипт надо передать параметры четвертый и/или далее, третий должен присутствовать.

Например, скрипт со строкой параметров ("%L", "f", "2") занесет в буфер Two\Three\name.ext.

Четвертый параметр - символ или строка, которым требуется заменить символ "\". При создании веб-страничек чаще всего заменяют обратный слэш на прямой. Такую возможность предоставляет и List2Clip. Например: ("%L", "f", "", "_") даст c:_One_Two_Three_name.ext.

Наконец, пятый и шестой параметры - строки, которые надо добавить перед и после имени файла, соответственно. Например, строка параметров ("%L", "p", "", "/", "<a href=", ">hyperlink text</a>") занесет в буфер <a href=c:/One/Two/Three>hyperlink text</a>.

Теперь рассмотрим седьмой параметр. Его необходимо задавать, только если в буфер надо занести символ " (кавычки). Параметр может принимать любое значение, отличное от символа кавычек, например, quote. Тогда последовательность символов quote, входящая в состав пятого и шестого параметра, заменится на ". Занесем в буфер гиперссылку на файл без расширения, учитывая глубину 3, заключая имя файла в кавычки и заменяя "\" на "/": ("%L", "q", "3", "/", "<a href=quote", "quote></a>", "quote"). Получим <a href="c:\One\Two\Three\name"></a>.

Единственный обязательный параметр скрипта - первый, всегда равный %L. Вызов с одним этим параметром аналогичен вызову с параметрами ("%L", "f"). Если параметр (третий и далее) не нужен, можно его вообще не задавать, но, как уже указывалось, только если последующие параметры также не требуются. В противном случае лучше писать "". Для пояснения рассмотрим искусственный пример: скрипт со строкой ("%L", "", "", "", "", " - full filename") занесет в буфер c:\One\Two\Three\name.ext - full filename.

Я поступил так: создал отдельную панель, на которой наплодил кнопочек на все случаи жизни. Каждая кнопка вызывает скрипт с соответствующими параметрами.


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