Как вывести в колонке часть пути, а не весь путь?

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Как вывести в колонке часть пути, а не весь путь?

Сообщение Ciber SLasH »

Приветствую всех!
Подскажите пожалуйста, как вывести в колонку часть пути?
Задача: есть пути C:\Test\1\a; D:\Test\1\b
каким плагином/скриптом вырезать из пути по RegExp-у \w:\\Test\\1\\ и результат поместить в колонку?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если нужно просто заменить букву диска на другую, можно и без плагинов: w[=tc.Путь:2-].
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

Нет, нужно именно вырезать часть пути. Или вывести, к примеру, последние 20 символов из пути.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Ciber SLasH писал(а):вывести, к примеру, последние 20 символов из пути
Может, так? [=tc.Путь:-21-]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ciber SLasH
Плагин так и называется Regexp (там же примеры в ini).
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

sa
Благодарю! Тоже вариант.
Flasher
Плагин RegExp не получает полный путь файла, а только имя:
Изображение
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Если нужно выделить 2-3 последние папки пути, то можно воспользоваться плагином filex:
[=filex.В подпапке папки]\[=filex.В подпапке]\[=filex.В папке]
Аватара пользователя
Ciber SLasH
Сообщения: 209
Зарегистрирован: Сб авг 20, 2005 21:41
Откуда: С.-Петербург

Сообщение Ciber SLasH »

sa
FileX тоже пригодился. :wink:
В общем задачу решил: FileX + script
секция [CustomFields] wincmd.ini:

Код: Выделить всё

Headers1=Путь (последние 3 каталога)\nПуть (без первых 3 каталогов)
Contents1=[=filex.GtGrandPaDir"\"][=filex.GrandPaDir"\"][=filex.ParentDir"\"]\n[=script.Result]
Options1=-1|1
script.ini

Код: Выделить всё

[Script]
Section=getPartialPath

[getPartialPath]
Script=.\Scripts\getPartialPath.js
LongName=1
getPartialPath.js

Код: Выделить всё

var depth = 3;	// глубина вложенности каталогов в пути, которую нужно отбросить
var reg = new RegExp("^\\w:\\\\([^\\\\]+\\\\){"+depth+"}(.*)$");
var m = reg.exec(getPath(filename));

Content = "...\\"+m[m.length-1]+"\\";

////////////////////////////////////////////////////////////////////////////////
//==[ Funcs ]===================================================================
////////////////////////////////////////////////////////////////////////////////

//--[ Возвращает путь из полного имени файла ]----------------------------------
function getPath(fullName) {
	return fullName.slice(0, fullName.lastIndexOf('\\'));
}
Добавлено спустя 2 часа 1 минуту:

Пришлось переделывать, не везде JS-скрипт отрабатывал.
Переделал на VBS (т.к. объект WScript в JS не доступен - ругань на WScript.CreateObject):

Код: Выделить всё

Dim FSO, Path, depth, re, m, sm, ret
'Глубина вложенности каталогов в пути, которую нужно отбросить
depth = 3
Set FSO = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp
re.Pattern = "^\w:\\([^\\]+\\){" & depth & "}(.*)$"
Path = Left(filename, InStrRev(filename, "\"))
Set m = re.Execute(Path)
ret = filename
If m.Count > 0 Then
	Set sm = m(0)
	If sm.SubMatches.Count > 0 Then
		ret = "...\" & sm.SubMatches(sm.SubMatches.Count-1)
	End If
End If
content = ret

Set FSO = Nothing
Set re = Nothing
Set m = Nothing
Set sm = Nothing
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ciber SLasH писал(а):объект WScript в JS не доступен
Для этого есть new ActiveXObject.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Точно, причём сам WScript недоступен в script плагине и для VBS.
Ответить