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 Previous  1, 2, 3
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
ask-rus



Joined: 10 Nov 2009
Posts: 2077
Location: Russian Federation

Post (Separately) Posted: Sun Apr 21, 2013 20:28    Post subject: Reply with quote

Flasher wrote:
Зачем добавлять в закладки то, что можно запомнить в плейлисте и проиграть сразу там?

Тогда идут примеры с отправкой файлов-закладок на редактирование.
Flasher wrote:
Пример с виртуальными панелями тоже куда продуктивнее закладок.

Я бы хотел видеть файлы-закладки в своей среде - т.е. среди остальных файлов. Анализировать, сравнивать.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
mf-zl



Joined: 21 Aug 2005
Posts: 71
Location: BLR

Post (Separately) Posted: Mon Apr 22, 2013 01:28    Post subject: Reply with quote

LonerD
Немного подправил скрипт.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 22, 2013 08:58    Post subject: Reply with quote

Не на 100% уверен в точности отработки. Пробуйте.
Code:
'================================================================================
' Перейти к запомненному списку элементов / запомнить выбранный список элементов

' Параметр: %WL

' Автор: Flasher ©
'================================= Путь к TCMC ==================================
TCMC = """%COMMANDER_PATH%\Utils\TCMC\TCMC.exe"""
'================================ Путь к TCFS2 ==================================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'================================================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
'=========================== Путь к файлу с записью =============================
File = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") & "\Scripts\Bookmark.txt"
'================================================================================
With WScript.Arguments
C = .Count : If C = 0 Then Line = WSH.CurrentDirectory Else List = .Item(0)
End With
With CreateObject("Scripting.FileSystemObject")
  If Not .FileExists(File) Then
    If C = 1 Then .MoveFile List, File Else _
    .OpenTextFile(File, 2, True, -1).Write Line   
  Else
    Set Temp = .GetFile(File).OpenAsTextStream(1, -1)
    All = Temp.ReadAll : Arr = Split(All, vbNewLine) : Line = Arr(0)
    Temp.Close : Set Temp = Nothing
    If .FileExists(Line) Or Right(Line, 1) <> "\" Then
      WSH.Run TCMC  & " cds """ & Line & "\'"" """"", 0, True
    Else
      WSH.Run TCFS2 & "/ef msg($0B,0)",               0, True
      WSH.Run TCMC  & " cds """ & Line & """ """"",   0, True
      WSH.Run TCFS2 & "/ef tcm(1001) msg($0B,1) redraw()", 0, True
    End If
    If Ubound(Arr) > 1 Then
      P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
      A = WSH.RegRead(P) : If A > 0 Then WSH.RegWrite P, 0, "REG_DWORD"
      With CreateObject("InternetExplorer.Application")
        .Navigate("about:blank")
        T = .Document.ParentWindow.ClipboardData.GetData("text")
        .Document.ParentWindow.ClipboardData.SetData "text", All
        WSH.Run TCFS2 & "/ef tcm(2033)", 0, True
        .Document.ParentWindow.ClipboardData.SetData "text", T
        .ExecWB 45, 2 : .Quit
      End With : If A > 0 Then WSH.RegWrite P, A, "REG_DWORD"   
    End If : If .FileExists(File) Then .DeleteFile File
  End If
End With : Set WSH = Nothing

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



Joined: 10 Nov 2009
Posts: 2077
Location: Russian Federation

Post (Separately) Posted: Mon Apr 22, 2013 15:18    Post subject: Reply with quote

Code:
---------------------------
Windows Script Host
---------------------------
Сценарий:   D:\TotalCmd8\PLUGINS\vbs\1.vbs
Строка:   21
Символ:   19
Ошибка:   Путь не найден
Код:   800A004C
Источник:    Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------

_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 22, 2013 16:27    Post subject: Reply with quote

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



Joined: 10 Nov 2009
Posts: 2077
Location: Russian Federation

Post (Separately) Posted: Mon Apr 22, 2013 18:10    Post subject: Reply with quote

Снова, как обязательное:
Разрешить программный доступ к буферу обмена > Включить.
Без этого никак? По умолчанию в системе (8-ка) - Предлагать.

Flasher wrote:
Путь к файлу закладок не указан или указан неправильно.

Как правильно выглядит строка, если нужно будет в %COMMANDER_PATH%\BOOKMARK\bookmark1.txt?
Пока прописал так:
Code:
File = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") & "1.txt"

Думал, создаст в корне TC, а создаёт в корне диска.

Есть издержки, но в целом работает. Конечно, не то, чего я ожидал.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 22, 2013 18:37    Post subject: Reply with quote

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



Joined: 10 Nov 2009
Posts: 2077
Location: Russian Federation

Post (Separately) Posted: Mon Apr 22, 2013 19:00    Post subject: Reply with quote

Flasher wrote:
Nircmd могу включить, если устроит.

Если с Предлагать скрипт будет работать, то устроит.
Flasher wrote:
А что ожидал?

В данном случае обратиться к файлам-закладкам я могу только единожды. Я ожидал два скрипта в одном, т.е. для установки закладки запуск скрипта с одним параметром, для перехода к закладке - с другим.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1172
Location: Макеевка

Post (Separately) Posted: Mon Apr 22, 2013 19:22    Post subject: Reply with quote

Flasher
Вроде чётко отрабатывает, погонял немного - ошибок не обнаружилось.
В режиме просмотра без каталогов - выбивает ошибку (в отличие от предыдущего скрипта), но это и понятно - тут ведь цель другая.
Стоп. Несколько раз выбивало ошибку при первом вызове когда закладка сохраняется (а строку ошибки не запомнил), но теперь не воспроизводится, всё работает.

ask-rus
А вот как сейчас в скрипте, только название каталога и файла "\Scripts\Bookmark.txt" заменить на свои - "\BOOKMARK\bookmark1.txt".
Создаёт в корне диска, потому что в пути пропущен слеш - надо & "\1.txt"

mf-zl
Теперь при положении курсора на .. - закладка не запоминается и ничего не происходит (лучше бы запоминалось и переходило на эту позицию).
Переход всё также - переходит в большинстве случаев не на запомненный файл/каталог - а просто в каталог, в котором расположен запомненный объект.
_________________
Windows 11 | TC DreamLair eternal pre-α


Last edited by LonerD on Mon Apr 22, 2013 20:29; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Apr 22, 2013 19:53    Post subject: Reply with quote

ask-rus wrote:
В данном случае обратиться к файлам-закладкам я могу только единожды. Я ожидал два скрипта в одном, т.е. для установки закладки запуск скрипта с одним параметром, для перехода к закладке - с другим.
Тут алгоритм несколько другой будет. То, что ты хочешь, проще реализуется.
Первая команда-кнопка:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\nircmd\nircmd.exe  execmd move /y
%WL "%%COMMANDER_PATH%%\Bookmark.txt"
wcmicons.dll,59
Записать выбранный список в файл-закладку

Ммм.. А вот со второй командой проблема. У nircmd c буфером есть определённые ограничения. Он не может писать кириллицу и Юникод. Надо что-то другое придумывать..

LonerD wrote:
но это и понятно - тут ведь цель другая
Конечно.
LonerD wrote:
но теперь не воспроизводится, всё работает
Вот и ладненько.

LonerD wrote:
Создаёт в корне диска, потому что в пути пропущен слеш
>
Flasher wrote:
Перед именем косую черту пропустил.

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



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

Post (Separately) Posted: Tue Apr 23, 2013 17:24    Post subject: Reply with quote

Кнопка не годится, если курсор на [..] без выделений. Поэтому скрипт:
Code:
'===================================================================================
' Перезаписать файл-список в ТС
' Условие: путь запуска пустой
' Параметр: %WL
'===================================================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
'=========================== Путь к файлу со списком ===============================
File = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") & "\BOOKMARK\Bookmark1.txt"
'===================================================================================
With WScript.Arguments
  C = .Count : If C = 0 Then Line = WSH.CurrentDirectory Else List = .Item(0)
End With
With CreateObject("Scripting.FileSystemObject")
  If .FileExists(File) Then .DeleteFile File
  If C = 1 Then .MoveFile List, File Else .OpenTextFile(File, 2, True, -1).Write Line
End With : Set WSH = Nothing
Скрипт второй команды с использованием clip:
Code:
'==================================================================================
' Перейти к запомненному списку элементов

' Условие: в ТС создать команду em_cd ( Команда: cd  |  Параметры: %А )

' Автор: Flasher ©
'================================= Путь к TCFS2 ===================================
TCFS2  = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'================================== Путь к Clip ===================================
Clip = """%COMMANDER_PATH%\Utils\clip.exe"""
'==================================================================================
Dim WSH : Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
'=========================== Путь к файлу  со списком =============================
File = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") & "\BOOKMARK\Bookmark1.txt"
'==================================================================================
Set Marks = FSO.GetFile(File).OpenAsTextStream(1, -1)
Arr = Split(Marks.ReadAll, vbNewLine) : Line = Arr(0)
If FSO.FileExists(Line) Or Right(Line, 1) <> "\" Then WSH.Run TCFS2 & "/ef ""tem(`em_cd " & Line & "\'`)""", 0, True Else _
WSH.Run TCFS2 & "/ef ""msg($0B,0) tem(`em_cd "&Line&"`) tcm(1001) msg($0B,1) redraw()", 0, True
If Ubound(Arr) > 1 Then
  WSH.Run "%comspec% /c """ & Clip & "<""" & File & """""", 0, True
  WSH.Run TCFS2 & "/ef ""tcm(2033) send(` `)""", 0, True : WSH.Run "%comspec% /c type|" & Clip, 0, True
End If : Marks.Close : Set Marks = Nothing : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
Тут есть один нюанс. Из-за того, что утилита посылает юникодный текст с запретным символом спереди, Тотал не выделяет первый элемент (под курсором). Исправлено.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Tue May 14, 2013 13:14; edited 2 times in total
Back to top
View user's profile Send private message
ask-rus



Joined: 10 Nov 2009
Posts: 2077
Location: Russian Federation

Post (Separately) Posted: Wed Apr 24, 2013 08:52    Post subject: Reply with quote

Flasher
Нет возможности проверить пока. Достаточно настораживает момент:
Flasher wrote:
Тотал не выделяет первый элемент (под курсором).

Некрасиво, по-моему.

Кстати, в твоих скриптах нужен Хелпер? Я не помню, был ли он у меня зареган при тестах.
_________________
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Apr 24, 2013 09:23    Post subject: Reply with quote

ask-rus wrote:
Некрасиво, по-моему.
Я могу нажимать Space, хочется с TCFS2, но там проблема.

ask-rus wrote:
в твоих скриптах нужен Хелпер?
Памятка - пункт 8.
Обсуждение буфера и портабельности в этой ветке. Поиск в скриптах по Helper.
С вопросами новичка завяжешь когда-нибудь? Wink
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2694

Post (Separately) Posted: Wed Apr 24, 2013 09:45    Post subject: Reply with quote

Flasher wrote:
Я могу нажимать Space, хочется с TCFS2

Используй просто пробел (без всяких {SP} или {SPACE}).
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Apr 24, 2013 10:00    Post subject: Reply with quote

sa
Пробовал. Давай с этим вопросом в соотв. топик.

Добавлено спустя 1 час 26 минут:

Flasher wrote:
Я могу нажимать Space, хочется с TCFS2
Дополнил скрипт.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
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 Previous  1, 2, 3
Page 3 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