View previous topic :: View next topic |
Author |
Message |
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Fri Dec 01, 2017 15:55 Post subject: Копирование списка относительных путей выбранных объектов |
|
|
Как скопировать относительные пути файлов/папок в режиме 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 |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Fri Dec 01, 2017 17:04 Post subject: |
|
|
ingerard
Плагинов такого типа не существует в принципе. Команд TC для копирования в буфер только относительных путей с отсечением начальной части — тоже. И почему вы думаете, что скопированное по такой методике потом удалось бы использовать для восстановленяи выделения? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Fri Dec 01, 2017 17:38 Post subject: |
|
|
Avada
Ну потому что это работает, предварительно отсекаю в редакторе часть пути и команда - cm_LoadSelectionFromClip нормально выделяет. Очень плохо что она с полными путями не работает, не было бы таких костылей.
Есть плагин lst2clip, но как в него загружать путь текущего каталога активной панели... и потом функцией плагина "replace" отсекать эту часть. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Fri Dec 01, 2017 17:58 Post subject: |
|
|
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 |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Fri Dec 01, 2017 18:05 Post subject: |
|
|
Avada
Да точно, ошибся. Уже пробовал разбираться, как написал выше не знаю как из тотала передать програмке текущий путь папки "d:\test\" из примера выше. Кстати встроенная команда "Сохранить выделение в файл" сохраняет пути точно как мне надо, но мне нужно не в файл, а в буфер. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Fri Dec 01, 2017 18:09 Post subject: |
|
|
ingerard
Принцип сохранения выделения в файл совсем другой. Так всё-таки, зачем это нужно? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Fri Dec 01, 2017 18:18 Post subject: |
|
|
Avada
Ну есть такая необходимость в режиме без папок сохранять выделение в буфер и потом удачно его восстановить через время.
Объясните почему одна команда сохраняет по одному, а другая по другому |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10275 Location: Россия, Саратов
|
(Separately) Posted: Fri Dec 01, 2017 18:48 Post subject: |
|
|
ingerard
Потому что задачи разные. При сохранении выделения в файл в штатном режиме вообще никаких путей нет, только имена, поскольку сохранение по умолчанию предлагается в тот же каталог, где что-то выделено (из него же потом и загружаться будет). И только в режиме файлов без подкаталогов указываются все пути относительно корня этой самой "ветви каталога" — опять же для успешного восстановления.
При копировании в буфер надобности заморачиваться будущей загрузкой выделения нет, ибо само такое копирование выполняется в большинстве случаев совсем с другими целями (поэтому, в частности, команда "Загрузить выделение из буфера" имеется, а "Сохранить выделение в буфер" — нет, используется результат действия команд 2017, 2018 или 2021).
И, между прочим, сохранение в буфер а) занимает на неопределённое время этот самый буфер, который может понадобиться с другой целью: б) не особо надёжно и в текущем-то сеансе TC, коль скоро содержимое буфера легко перезаписать самыми разными способами; в) даже при сохранности содержимого буфера перестанет загружаться после первого же перезапуска TC.
Пользуйтесь сохранением в файл. От добра добра не ищут. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Dec 01, 2017 18:48 Post subject: |
|
|
ingerard
Для этого скрипта достаточно копировать имена. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Dec 01, 2017 20:58 Post subject: |
|
|
Вахмурка
Так копирование делается не для того, чтобы было, а конкретно для восстановления выделения. Поэтому логично копировать обычные имена стандартной командой, пользоваться моим скриптом и не париться с режимами. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Sat Dec 02, 2017 00:15 Post subject: |
|
|
Flasher wrote: | Для этого скрипта достаточно копировать имена. |
Если среди файлов будут одинаковые имена и они будут в разных папках, то выделит все, что не допустимо, и через скрипт очень долго тупит если элементов много.
Avada
Конечно у каждого свое виденье какие нужны функции в тотале, а какие нет... Но мне было бы удобно работать именно с буфером, это как-то быстрее чем в файлы сохранять. Ну и буфер обмена у меня сам собой не живет и потерь неожиданных не случалось.
Вахмурка
Спасибо, но для поверпро вроде надо доустанавливать модули, можно что-то подобное на vbs? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 02, 2017 01:08 Post subject: |
|
|
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 |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
(Separately) Posted: Sat Dec 02, 2017 01:33 Post subject: |
|
|
Quote: | Спасибо, но для поверпро вроде надо доустанавливать модули | Модули не модули, один плагин ini не входит в стандартную поставку. Скачал да записал Quote: | можно что-то подобное на vbs? | Конечно, можно _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
ingerard
Joined: 04 Dec 2016 Posts: 128
|
(Separately) Posted: Sat Dec 02, 2017 10:22 Post subject: |
|
|
Flasher
Круто! Второй скрипт работает, но в начало всего текста он добавляет бяку(EF BB BF(Byte Order Mark)), из-за которой первый элемент не может быть выделен.
Quote: | Не думаю, что отправка в буфер по совокупности с последующим восстановлением окажется быстрее |
Я сравнивал по скорости, то встроенная команда восстанавливает выделение моментально.
Вахмурка
А можно выложить на другой обменник? В Украине недоступен Яндекс. |
|
Back to top |
|
|
|
|
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
|