Копирование списка относительных путей выбранных объектов
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Копирование списка относительных путей выбранных объектов Author: ingerard PostPosted: Fri Dec 01, 2017 15:55
    —
Как скопировать относительные пути файлов/папок в режиме Branch? Это нужно для того чтоб работало нормально восстановление выделение файлов из буфера(cm_LoadSelectionFromClip). Ну и пример для лучшего понимания, есть файлы/папки с абсолютными путями:
d:\test\NO.BAR
d:\test\System.bar
d:\test\VERTICAL.BAR
d:\test\TCBL\Super_help.chm
d:\test\Plugins\arc\7za.dll
d:\test\Plugins\arc\Uha.exe
d:\test\Plugins\arc\Ace.key
d:\test\LANGUAGE\WCMD_RUS.LNG
d:\test\LANGUAGE\WCMD_RUS.MNU
d:\test\LANGUAGE\WCMD_RUS_org.MNU

После выполнения команды должно в буфере быть так:
NO.BAR
System.bar
VERTICAL.BAR
TCBL\Super_help.chm
Plugins\arc\7za.dll
Plugins\arc\Uha.exe
Plugins\arc\Ace.key
LANGUAGE\WCMD_RUS.LNG
LANGUAGE\WCMD_RUS.MNU
LANGUAGE\WCMD_RUS_org.MNU

И такая просьба, можно ли это сделать через какой-то плагин или посредством CMD? Чтоб было как-то более портативно.

#2:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Dec 01, 2017 17:04
    —
ingerard
Плагинов такого типа не существует в принципе. Команд TC для копирования в буфер только относительных путей с отсечением начальной части — тоже. И почему вы думаете, что скопированное по такой методике потом удалось бы использовать для восстановленяи выделения?

#3:  Author: ingerard PostPosted: Fri Dec 01, 2017 17:38
    —
Avada
Ну потому что это работает, предварительно отсекаю в редакторе часть пути и команда - cm_LoadSelectionFromClip нормально выделяет. Очень плохо что она с полными путями не работает, не было бы таких костылей.

Есть плагин lst2clip, но как в него загружать путь текущего каталога активной панели... и потом функцией плагина "replace" отсекать эту часть.

#4:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Dec 01, 2017 17:58
    —
ingerard
Безотносительно ко всяческим "как" List To Clipboard (lst2clip.exe) — не плагин, что даже по расширению видно. А как — разбирайтесь в документации, если получится. Мне показалось, что не выйдет. Но программа старая-престарая, 2003 года (хотя, видимо, для кого-то и полезная), я ей уже много лет не пользуюсь.
И, кстати, зачем вам это вообще надо, я, если честно, не понял. (Упоминание портативности ничего не прояснило. Выделение-то тут при чём?)


Last edited by Avada on Fri Dec 01, 2017 18:05; edited 1 time in total

#5:  Author: ingerard PostPosted: Fri Dec 01, 2017 18:05
    —
Avada
Да точно, ошибся. Уже пробовал разбираться, как написал выше не знаю как из тотала передать програмке текущий путь папки "d:\test\" из примера выше. Кстати встроенная команда "Сохранить выделение в файл" сохраняет пути точно как мне надо, но мне нужно не в файл, а в буфер.

#6:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Dec 01, 2017 18:09
    —
ingerard
Принцип сохранения выделения в файл совсем другой. Так всё-таки, зачем это нужно?

#7:  Author: ingerard PostPosted: Fri Dec 01, 2017 18:18
    —
Avada
Ну есть такая необходимость в режиме без папок сохранять выделение в буфер и потом удачно его восстановить через время.

Объясните почему одна команда сохраняет по одному, а другая по другому

#8:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Dec 01, 2017 18:48
    —
ingerard
Потому что задачи разные. При сохранении выделения в файл в штатном режиме вообще никаких путей нет, только имена, поскольку сохранение по умолчанию предлагается в тот же каталог, где что-то выделено (из него же потом и загружаться будет). И только в режиме файлов без подкаталогов указываются все пути относительно корня этой самой "ветви каталога" — опять же для успешного восстановления.
При копировании в буфер надобности заморачиваться будущей загрузкой выделения нет, ибо само такое копирование выполняется в большинстве случаев совсем с другими целями (поэтому, в частности, команда "Загрузить выделение из буфера" имеется, а "Сохранить выделение в буфер" — нет, используется результат действия команд 2017, 2018 или 2021).
И, между прочим, сохранение в буфер а) занимает на неопределённое время этот самый буфер, который может понадобиться с другой целью: б) не особо надёжно и в текущем-то сеансе TC, коль скоро содержимое буфера легко перезаписать самыми разными способами; в) даже при сохранности содержимого буфера перестанет загружаться после первого же перезапуска TC.
Пользуйтесь сохранением в файл. От добра добра не ищут.

#9:  Author: FlasherLocation: Москва PostPosted: Fri Dec 01, 2017 18:48
    —
ingerard
Для этого скрипта достаточно копировать имена.

#10:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Fri Dec 01, 2017 20:30
    —
ClipFileList
ClipListDialog

#11:  Author: FlasherLocation: Москва PostPosted: Fri Dec 01, 2017 20:58
    —
Вахмурка
Так копирование делается не для того, чтобы было, а конкретно для восстановления выделения. Поэтому логично копировать обычные имена стандартной командой, пользоваться моим скриптом и не париться с режимами.

#12:  Author: ingerard PostPosted: Sat Dec 02, 2017 00:15
    —
Flasher wrote:
Для этого скрипта достаточно копировать имена.

Если среди файлов будут одинаковые имена и они будут в разных папках, то выделит все, что не допустимо, и через скрипт очень долго тупит если элементов много.

Avada
Конечно у каждого свое виденье какие нужны функции в тотале, а какие нет... Но мне было бы удобно работать именно с буфером, это как-то быстрее чем в файлы сохранять. Ну и буфер обмена у меня сам собой не живет и потерь неожиданных не случалось.

Вахмурка
Спасибо, но для поверпро вроде надо доустанавливать модули, можно что-то подобное на vbs?

#13:  Author: FlasherLocation: Москва PostPosted: Sat Dec 02, 2017 01:08
    —
ingerard wrote:
Если среди файлов будут одинаковые имена и они будут в разных папках, то выделит все, что не допустимо
Да, не всегда требуется, согласен. Это, в принципе, легко поправимо, но...
ingerard wrote:
и через скрипт очень долго тупит если элементов много.
Не думаю, что отправка в буфер по совокупности с последующим восстановлением окажется быстрее:
Code:
'======================= VBS ======================
' Скопировать относительные пути выбранных объектов
' Условие: требуется компонент TCScript.dll
'==================================================
With CreateObject("TCScript.Helper")
  .Pause = 0 : .Wait = True : .NoArrayReturn = True
  Sel = .GetSrcSelectedFiles(1) : P = .GetInfo("SP")
  If P <> "" Then
    If Right(P, 1) <> "\" Then P = P & "\"
    If .INIRead(.MainINI, "Configuration", "DrivesExportUpcase", -1) _
    < 1 Then P = LCase(Left(P, 1)) & Mid(P, 2)
    Sel = Replace(Sel, P, "")
  End If : .SetTextToClip Sel
End With
Либо:
Code:
'======================= VBS ======================
' Скопировать относительные пути выбранных объектов
' Параметры: %WL "%P"%Z
'==================================================
Set A = WSH.Arguments : If A.Count = 0 Then WSH.Quit
With CreateObject("Scripting.FileSystemObject")
  All = .OpenTextFile(A(0),,,-1).ReadAll
  .OpenTextFile(A(0),2,,-1).Write vbCr & Replace(All, .BuildPath(A(1), "\"), "")
End With
CreateObject("WScript.Shell").Run "%ComSpec% /c clip<" & A(0), 0


Last edited by Flasher on Mon Dec 04, 2017 02:14; edited 9 times in total

#14:  Author: ВахмуркаLocation: Большая деревня Москва PostPosted: Sat Dec 02, 2017 01:33
    —
Quote:
Спасибо, но для поверпро вроде надо доустанавливать модули
Модули не модули, один плагин ini не входит в стандартную поставку. Скачал да записал
Quote:
можно что-то подобное на vbs?
Конечно, можно Wink

#15:  Author: ingerard PostPosted: Sat Dec 02, 2017 10:22
    —
Flasher
Круто! Второй скрипт работает, но в начало всего текста он добавляет бяку(EF BB BF(Byte Order Mark)), из-за которой первый элемент не может быть выделен.

Quote:
Не думаю, что отправка в буфер по совокупности с последующим восстановлением окажется быстрее

Я сравнивал по скорости, то встроенная команда восстанавливает выделение моментально.

Вахмурка
А можно выложить на другой обменник? В Украине недоступен Яндекс.



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


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

Goto page 1, 2, 3  Next  :| |:
Page 1 of 3

Powered by phpBB © 2001, 2005 phpBB Group