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