Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Как вывести в колонке часть пути, а не весь путь? 
Author Message
Ciber SLasH



PostPosted: Fri Dec 06, 2013 09:01    Post subject: Reply with quote

sa
FileX тоже пригодился. Wink
В общем задачу решил: FileX + script
секция [CustomFields] wincmd.ini:
Code:
Headers1=Путь (последние 3 каталога)\nПуть (без первых 3 каталогов)
Contents1=[=filex.GtGrandPaDir"\"][=filex.GrandPaDir"\"][=filex.ParentDir"\"]\n[=script.Result]
Options1=-1|1

script.ini
Code:
[Script]
Section=getPartialPath

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

getPartialPath.js
Code:
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):
Code:
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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group