lnk (ярлык) с относительными путями
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: lnk (ярлык) с относительными путями Author: slideray PostPosted: Tue Jun 17, 2014 03:35
    —
Задача.
Создать ярлык на папку в пределах жесткого диска.
Ярлык должен лежать в одной папке, указывать на другую и не иметь жесткую привязку к диску (т.е. пути должны быть относительные)

Целеполагание.
Проще всего объяснить на примере музыкальной коллекции.
Есть собрание оцифрованной музыки в одной папке. Куча альбомов, разделённые в свою очередь по разделам.
К некоторым альбомам прилагается видео-контент. Это не удобно когда открываешь в плеере (видео добавляется в плейлист тоже).
Поэтому всё видео перемещается в отдельную от музыки папку.
И вот как раз для того, что бы концептуально связать альбом и прилагающийся к нему видеоряд, требуется создать ярлык в альбоме на папку с видео.

Относительность путей требуется на случай, если вся коллекция музыки будет перемещена (другое место, другой компьютер), переделывать все ссылки это по крайней мере бесчеловечно. Поэтому фактор принципиальный.

Было бы очень замечательно, если бы создание ярлыка обходилось без скриптов по возможности, средствами Total Commander + плагин (по необходимости)
Было бы вовсе замечательно, если бы ярлык работал на любой файловой системе (win, lin, mac)

Алгоритм.
Code:
 стартовый каталог
C:\музыка\исполнитель\альбом\ссылка.lnk
 целевой каталог
C:\видео\альбом\


Трудности.
Создавая обычный ярлык, с последующим редактированием путей (заменой их на относительные), ярлык перестаёт работать.
Может быть я не правильно задаю относительный путь.

P.s.
Тему
Массовое создание ярлыков LNK с относительными путями
видел. Но ничего не понял в ней, ни о чём шла речь меж просвещённых мужей, ни плоды их соискательств.
Думаю моя постановка вопроса несколько проще, потому как групповых операций я не преследую.

#2:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jun 17, 2014 10:06
    —
Ярлык как LNK-файл - штука весьма капризная. Где-то предлагалась утилита для создания ярлыков с относительными путями, можно попробовать её. Кроме того, это исключительно виндовская штука, другие оси понятия о ней не имеют, на других платформах ярлыки если и есть, то в своих особенных форматах, поэтому о кроссплатформенности тут речи быть не может.

Не уточнено, что планируется с ярлыком делать. Переходить к папке по Enter? Открывать в другой панели по Ctrl+Влево/Вправо?

В рамках тотала роль такого ярлыка может играть и голый текстовый файл, содержащий относительный путь, при этом переход к папке может осуществляться по хоткею, запускающему утилитку или батник для перехода к указанной в файле папке.

#3:  Author: slideray PostPosted: Tue Jun 17, 2014 10:17
    —
MVV wrote:
Не уточнено, что планируется с ярлыком делать. Переходить к папке по Enter? Открывать в другой панели по Ctrl+Влево/Вправо?

Переходить к папке по Энтер (открываться должна в панели тотала есессно, а не в проводнике)
MVV wrote:
В рамках тотала роль такого ярлыка может играть и голый текстовый файл, содержащий относительный путь

Интересно!
MVV wrote:
при этом переход к папке может осуществляться по хоткею, запускающему утилитку или батник для перехода к указанной в файле папке.

Если можно подробнее.
Вообще идеальный вариант не хоткей, а именно переход к папке по энтеру, с возможностью открыть в соседней панели по Ctrl+Влево/Вправо.

#4:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jun 17, 2014 10:33
    —
По Ctrl+Влево/Вправо с текстовым файлом не получится, тотал их обрабатывает только для папок и ярлыков папок. А батник, открывающий папку из текстового файла, может иметь следующий вид:
Code:
@echo off
if -%1==- echo Parameters: %%P%%N & pause & goto :EOF
for /f "usebackq delims=" %%t in (`type 1.txt`) do set relpath=%%t
if "%relpath:~1,1%" == ":" (
   set fullpath=%relpath%
) else if "%relpath:~0,1%" == "\" (
   set fullpath=%~d1%relpath%
) else (
   set fullpath=%~dp1%relpath%
)
%COMMANDER_EXE% /O /S /T /L=%fullpath%

Поддерживает полные и относительные пути, записанные в текстовом файле. В параметрах файла необходимо указать %P%N. В текущем варианте открывает папку в новой вкладке активной панели. Если заменить /L на /R, будет в неактивной, если убрать /T - будет без создания новой вкладки. Для назначения хоткея нужно сделать юзер-команду и задать ей хоткей на странице Разное настроек тотала.

Чтобы работало по Enter, текстовый файл нужно заменить батником вида:
Code:
@echo off
set relpath=..\music\albums\aaa
%COMMANDER_EXE% /O /S /T /L=%~dp0%relpath%


Можно вместо запуска экзешника самого тотала использовать, например, TCFS2, чтобы посылать ту же команду запущенному тоталу, должно работать быстрее, т.к. на загрузку экзешника в память будет уходить меньше времени.


Last edited by MVV on Tue Jun 17, 2014 10:39; edited 1 time in total

#5:  Author: FlasherLocation: Москва PostPosted: Tue Jun 17, 2014 10:38
    —
MVV
Странно, что ты не предложил симлинки с относительными путями.

#6:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jun 17, 2014 10:40
    —
Flasher,
Симлинки очень неудобно переносить с места на место, они не работают в системах до висты, для их создания нужны права администратора, да и к папке по ним не перейдёшь.

#7:  Author: FlasherLocation: Москва PostPosted: Tue Jun 17, 2014 11:15
    —
MVV wrote:
Симлинки очень неудобно переносить с места на место
Если относительные пути не менялись, то всё удобно.
MVV wrote:
да и к папке по ним не перейдёшь
Это чего вдруг? Всегда переходили, а тут - нет. Smile

#8:  Author: MVVLocation: Ростов-Дон PostPosted: Tue Jun 17, 2014 11:35
    —
Flasher wrote:
Если относительные пути не менялись, то всё удобно.

Ты много способов копирования структуры каталогов с сохранением симлинков знаешь?

Flasher wrote:
Это чего вдруг? Всегда переходили, а тут - нет. Smile

Я имею в виду по Ctrl+Влево/Вправо. В симлинк можно зайти и увидеть содержимое папки, но к самой папке перейти нельзя.

Батник же легко скопировать, Enter откроет папку, плюс можно по хоткею прописать другой батник, который из этого прочтёт строку relpath= и откроет папку в другой панели.

#9:  Author: CaptainFlintLocation: Москва PostPosted: Tue Jun 17, 2014 13:59
    —
MVV wrote:
В симлинк можно зайти и увидеть содержимое папки, но к самой папке перейти нельзя.

Можно воспользоваться трюком: выставить ей полный запрет на переход, тогда Тотал будет её резолвить и переходить в целевой каталог. Это было сделано как обходной путь для стандартных вистовских ссылок, у некоторых из которых такие странные ограничения прав.

#10:  Author: FlasherLocation: Москва PostPosted: Tue Jun 17, 2014 14:29
    —
MVV wrote:
Ты много способов копирования структуры каталогов с сохранением симлинков знаешь?
А надо ли много? Smile
MVV wrote:
В симлинк можно зайти и увидеть содержимое папки, но к самой папке перейти нельзя
Так же как и к обычной папке.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group