Страница 3 из 3

Добавлено: Вс апр 21, 2013 20:28
ask-rus
Flasher писал(а):Зачем добавлять в закладки то, что можно запомнить в плейлисте и проиграть сразу там?
Тогда идут примеры с отправкой файлов-закладок на редактирование.
Flasher писал(а):Пример с виртуальными панелями тоже куда продуктивнее закладок.
Я бы хотел видеть файлы-закладки в своей среде - т.е. среди остальных файлов. Анализировать, сравнивать.

Добавлено: Пн апр 22, 2013 01:28
mf-zl

Добавлено: Пн апр 22, 2013 08:58
Flasher
Не на 100% уверен в точности отработки. Пробуйте.

Код: Выделить всё

'================================================================================ 
' Перейти к запомненному списку элементов / запомнить выбранный список элементов

' Параметр: %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

Добавлено: Пн апр 22, 2013 15:18
ask-rus

Код: Выделить всё

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

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

Добавлено: Пн апр 22, 2013 16:27
Flasher
Путь к файлу закладок не указан или указан неправильно.

Добавлено: Пн апр 22, 2013 18:22
ask-rus
Снова, как обязательное:
Разрешить программный доступ к буферу обмена > Включить.
Без этого никак? По умолчанию в системе (8-ка) - Предлагать.
Flasher писал(а):Путь к файлу закладок не указан или указан неправильно.
Как правильно выглядит строка, если нужно будет в %COMMANDER_PATH%\BOOKMARK\bookmark1.txt?
Пока прописал так:

Код: Выделить всё

File = WSH.ExpandEnvironmentStrings("%COMMANDER_PATH%") & "1.txt"
Думал, создаст в корне TC, а создаёт в корне диска.

Есть издержки, но в целом работает. Конечно, не то, чего я ожидал.

Добавлено: Пн апр 22, 2013 18:37
Flasher
ask-rus писал(а):Без этого никак?
Я не был в восьмёрке. Nircmd могу включить, если устроит.
ask-rus писал(а):Думал, создаст в корне TC, а создаёт в корне диска.
Перед именем косую черту пропустил.
ask-rus писал(а):не то, чего я ожидал.
А что ожидал?

Добавлено: Пн апр 22, 2013 19:03
ask-rus
Flasher писал(а):Nircmd могу включить, если устроит.
Если с Предлагать скрипт будет работать, то устроит.
Flasher писал(а):А что ожидал?
В данном случае обратиться к файлам-закладкам я могу только единожды. Я ожидал два скрипта в одном, т.е. для установки закладки запуск скрипта с одним параметром, для перехода к закладке - с другим.

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

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

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

Добавлено: Пн апр 22, 2013 19:53
Flasher
ask-rus писал(а):В данном случае обратиться к файлам-закладкам я могу только единожды. Я ожидал два скрипта в одном, т.е. для установки закладки запуск скрипта с одним параметром, для перехода к закладке - с другим.
Тут алгоритм несколько другой будет. То, что ты хочешь, проще реализуется.
Первая команда-кнопка:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\nircmd\nircmd.exe  execmd move /y
%WL "%%COMMANDER_PATH%%\Bookmark.txt"
wcmicons.dll,59
Записать выбранный список в файл-закладку
Ммм.. А вот со второй командой проблема. У nircmd c буфером есть определённые ограничения. Он не может писать кириллицу и Юникод. Надо что-то другое придумывать..
LonerD писал(а):но это и понятно - тут ведь цель другая
Конечно.
LonerD писал(а):но теперь не воспроизводится, всё работает
Вот и ладненько.
LonerD писал(а):Создаёт в корне диска, потому что в пути пропущен слеш
>
Flasher писал(а):Перед именем косую черту пропустил.

Добавлено: Вт апр 23, 2013 17:24
Flasher
Кнопка не годится, если курсор на [..] без выделений. Поэтому скрипт:

Код: Выделить всё

'===================================================================================
' Перезаписать файл-список в ТС
' Условие: путь запуска пустой
' Параметр: %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:

Код: Выделить всё

'================================================================================== 
' Перейти к запомненному списку элементов

' Условие: в ТС создать команду 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
[s]Тут есть один нюанс. Из-за того, что утилита посылает юникодный текст с запретным символом спереди, Тотал не выделяет первый элемент (под курсором).[/s] Исправлено.

Добавлено: Ср апр 24, 2013 08:52
ask-rus
Flasher
Нет возможности проверить пока. Достаточно настораживает момент:
Flasher писал(а):Тотал не выделяет первый элемент (под курсором).
Некрасиво, по-моему.

Кстати, в твоих скриптах нужен Хелпер? Я не помню, был ли он у меня зареган при тестах.

Добавлено: Ср апр 24, 2013 09:23
Flasher
ask-rus писал(а):Некрасиво, по-моему.
Я могу нажимать Space, хочется с TCFS2, но там проблема.
ask-rus писал(а):в твоих скриптах нужен Хелпер?
Памятка - пункт 8.
Обсуждение буфера и портабельности в этой ветке. Поиск в скриптах по Helper.
С вопросами новичка завяжешь когда-нибудь? :wink:

Добавлено: Ср апр 24, 2013 09:45
sa
Flasher писал(а):Я могу нажимать Space, хочется с TCFS2
Используй просто пробел (без всяких {SP} или {SPACE}).

Добавлено: Ср апр 24, 2013 11:26
Flasher
sa
Пробовал. Давай с этим вопросом в соотв. топик.

Добавлено спустя 1 час 26 минут:
Flasher писал(а):Я могу нажимать Space, хочется с TCFS2
Дополнил скрипт.