| 
 | 
| Название | LinkPath | 
| Имя файла (*.txt) | LinkPath.txt | 
| Описание | Помещает в буфер ссылку на заданный файл относительно текущего пути | 
| Автор | Вахмурка | 
| Параметры | "%P", "%T", "%M" | 
| Вызываемые плагины | miscplugin, clip | 
| Иконка | 
 | 
    
| Версия | 2.0 | 
| Дата обновления | 26.01.2006 | 
args P, T, M
local Result, i, BegP, BegT
local Bef = "<a href="
local Aft = "></a>"
if(P == T) do
	Result = Bef ++ M ++ Aft
	clip.set(Result)
	quit
endif
;Sub_ParsePath - eiy ne?eioa ParsePath
local SourceDepth = runfile.Subs\Sub_ParsePath(P, "")
local TargetDepth = runfile.Subs\Sub_ParsePath(T, "")
if(index(P, T) != 0) do
	Result = Bef ++ repeat("../", SourceDepth - TargetDepth) ++ M ++ Aft
	clip.set(Result)
	quit
endif
if(index(T, P) != 0) do
	Result = Bef ++ select(T, length(P) - length(T)) ++ M ++ Aft
	clip.set(Result)
	quit
endif
local Lim = min(SourceDepth, TargetDepth)
local Counter = 0
for(i = 1; i <= Lim; i = i + 1)
	Result = BegP
	BegP = runfile.Subs\Sub_ParsePath(P, i - SourceDepth)
	BegT = runfile.Subs\Sub_ParsePath(T, i - TargetDepth)
	if(BegP == "" || BegT == "")
		break
	if(BegP == BegT) do
		Counter = Counter + 1
	else
		break
	endif
endfor
if(Counter == 0) do
	local mpDlgCaption = "LinkPath Script"
	local mpIcon = "WARNING"
	local mpDlgText = "Source path is " ++ P ++ "\nTarget file is " ++ T ++ M
	mpDlgText = mpDlgText ++ "\nThey seem to be on different logical disks!"
	miscplugin.messagebox(1, "&OK")
	quit
endif
Result = repeat("../", SourceDepth - Counter)
Result = Result ++ runfile.Subs\Sub_ParsePath(T, TargetDepth - Counter) ++ "/"
Result = Bef ++ replacechars(Result, "\", "/") ++ M ++ Aft
clip.set(Result)
Скрипт может оказаться полезным для веб-дизайнеров, которым приходится вставлять в странички ссылки на файлы, находящиеся в различных директориях относительно текущей.
Здесь и далее предполагается, что черновик веб-странички находится в текущей директории на активной панели. В противоположной панели нужно установить курсор на файл, ссылку на который необходимо получить ("целевой файл"). Разумеется, после этого курсор следует вернуть в исходную панель.
Пусть веб-страничка имеет следующее полное имя:
c:\One\Two\Three\Source.html
Помещаемые в буфер обмена ссылкы при различных путях целевого файла Target.html представлены в таблице:
| Полный путь целевого файла | Результат | 
| c:\One\Target.html | <a href=../../Target.html></a> | 
| c:\One\Two\Three\Target.html | <a href=Target.html></a> | 
| c:\Four\Five\Six\Target.html | <a href=../../../Four/Five/Six/Target.html></a> | 
| d:\Seven\Eight\Target.html | Ошибка! | 
Ошибка в последнем случае вызвана тем, что страничка и целевой файл находятся на разных логических дисках.
После запуска скрипта необходимо перейти в редактор веб-странички и вставить туда содержимое буфера.
Обратим внимание на то, что ссылка является относительной, а не абсолютной. Это значит, что, сохраняя структуру директорий, мы можем записать оба файла (веб-страничку и целевой файл) куда угодно, и ссылка будет работать всегда.
Внимание! В скрипте использовано ключевое слово args, введенное в PowerPro 4.4! В более ранних версиях PowerPro скрипт будет выдавать сообщение об ошибке. Если вы по каким-либо причинам не хотите устанавливать версию 4.4, первую строку скрипта следует заменить на 3 строки:
local P = arg(1)
local T = arg(2)
local M = arg(3)
 
 | 
На главную | 
 
 | 
Все о Total Commander | 
 
 | 
PowerPro | 
 
 | 
PowerPro & Total Commander |