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 

Копирование списка относительных путей выбранных объектов
Goto page 1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Fri Dec 01, 2017 15:55    Post subject: Копирование списка относительных путей выбранных объектов Reply with quote

Как скопировать относительные пути файлов/папок в режиме 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? Чтоб было как-то более портативно.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Fri Dec 01, 2017 17:04    Post subject: Reply with quote

ingerard
Плагинов такого типа не существует в принципе. Команд TC для копирования в буфер только относительных путей с отсечением начальной части — тоже. И почему вы думаете, что скопированное по такой методике потом удалось бы использовать для восстановленяи выделения?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Fri Dec 01, 2017 17:38    Post subject: Reply with quote

Avada
Ну потому что это работает, предварительно отсекаю в редакторе часть пути и команда - cm_LoadSelectionFromClip нормально выделяет. Очень плохо что она с полными путями не работает, не было бы таких костылей.

Есть плагин lst2clip, но как в него загружать путь текущего каталога активной панели... и потом функцией плагина "replace" отсекать эту часть.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Fri Dec 01, 2017 17:58    Post subject: Reply with quote

ingerard
Безотносительно ко всяческим "как" List To Clipboard (lst2clip.exe) — не плагин, что даже по расширению видно. А как — разбирайтесь в документации, если получится. Мне показалось, что не выйдет. Но программа старая-престарая, 2003 года (хотя, видимо, для кого-то и полезная), я ей уже много лет не пользуюсь.
И, кстати, зачем вам это вообще надо, я, если честно, не понял. (Упоминание портативности ничего не прояснило. Выделение-то тут при чём?)
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.


Last edited by Avada on Fri Dec 01, 2017 18:05; edited 1 time in total
Back to top
View user's profile Send private message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Fri Dec 01, 2017 18:05    Post subject: Reply with quote

Avada
Да точно, ошибся. Уже пробовал разбираться, как написал выше не знаю как из тотала передать програмке текущий путь папки "d:\test\" из примера выше. Кстати встроенная команда "Сохранить выделение в файл" сохраняет пути точно как мне надо, но мне нужно не в файл, а в буфер.
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Fri Dec 01, 2017 18:09    Post subject: Reply with quote

ingerard
Принцип сохранения выделения в файл совсем другой. Так всё-таки, зачем это нужно?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Fri Dec 01, 2017 18:18    Post subject: Reply with quote

Avada
Ну есть такая необходимость в режиме без папок сохранять выделение в буфер и потом удачно его восстановить через время.

Объясните почему одна команда сохраняет по одному, а другая по другому
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10236
Location: Россия, Саратов

Post (Separately) Posted: Fri Dec 01, 2017 18:48    Post subject: Reply with quote

ingerard
Потому что задачи разные. При сохранении выделения в файл в штатном режиме вообще никаких путей нет, только имена, поскольку сохранение по умолчанию предлагается в тот же каталог, где что-то выделено (из него же потом и загружаться будет). И только в режиме файлов без подкаталогов указываются все пути относительно корня этой самой "ветви каталога" — опять же для успешного восстановления.
При копировании в буфер надобности заморачиваться будущей загрузкой выделения нет, ибо само такое копирование выполняется в большинстве случаев совсем с другими целями (поэтому, в частности, команда "Загрузить выделение из буфера" имеется, а "Сохранить выделение в буфер" — нет, используется результат действия команд 2017, 2018 или 2021).
И, между прочим, сохранение в буфер а) занимает на неопределённое время этот самый буфер, который может понадобиться с другой целью: б) не особо надёжно и в текущем-то сеансе TC, коль скоро содержимое буфера легко перезаписать самыми разными способами; в) даже при сохранности содержимого буфера перестанет загружаться после первого же перезапуска TC.
Пользуйтесь сохранением в файл. От добра добра не ищут.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Dec 01, 2017 18:48    Post subject: Reply with quote

ingerard
Для этого скрипта достаточно копировать имена.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Fri Dec 01, 2017 20:30    Post subject: Reply with quote

ClipFileList
ClipListDialog
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Dec 01, 2017 20:58    Post subject: Reply with quote

Вахмурка
Так копирование делается не для того, чтобы было, а конкретно для восстановления выделения. Поэтому логично копировать обычные имена стандартной командой, пользоваться моим скриптом и не париться с режимами.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Sat Dec 02, 2017 00:15    Post subject: Reply with quote

Flasher wrote:
Для этого скрипта достаточно копировать имена.

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

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

Вахмурка
Спасибо, но для поверпро вроде надо доустанавливать модули, можно что-то подобное на vbs?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Dec 02, 2017 01:08    Post subject: Reply with quote

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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Mon Dec 04, 2017 02:14; edited 9 times in total
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sat Dec 02, 2017 01:33    Post subject: Reply with quote

Quote:
Спасибо, но для поверпро вроде надо доустанавливать модули
Модули не модули, один плагин ini не входит в стандартную поставку. Скачал да записал
Quote:
можно что-то подобное на vbs?
Конечно, можно Wink
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
ingerard



Joined: 04 Dec 2016
Posts: 128

Post (Separately) Posted: Sat Dec 02, 2017 10:22    Post subject: Reply with quote

Flasher
Круто! Второй скрипт работает, но в начало всего текста он добавляет бяку(EF BB BF(Byte Order Mark)), из-за которой первый элемент не может быть выделен.

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

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

Вахмурка
А можно выложить на другой обменник? В Украине недоступен Яндекс.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3  Next
Page 1 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group