Копирование имени без слеша

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Помогите, пожалуйста, зарегистрировать TCWSHelper - где можно найти инструкцию по регистрации? Спасибо.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

skyinfire
Для установки и регистрации в системе:
просто запустите TCWSHelp.exe с командной строкой
TCWSHelp.exe /REGSERVER

Важно!
При перемещении в другую папку нужно повторить регистрацию!
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

TCWSHelp.exe /REGSERVER
зарегистрировал, но тогда скрипт все-равно не работает - копирование имени происходит через iexplorer (в диспетчере задач запускаются его процессы).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

skyinfire
[s]Batya логическую ошибку допустил.[/s]
Последний раз редактировалось Flasher Чт июл 12, 2012 00:01, всего редактировалось 1 раз.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):Batya логическую ошибку допустил.
Не надо вводить в заблуждение.
Если речь об этом скрипте, то там всё правильно:
Если есть ошибка (т.е. объект "TCScript.Helper" не зарегистрирован), то копирование выполняется через IE.

Проблема с регистрацией TCScript.Helper связана, я более чем уверен, с тем, что не делается от имени администратора.
В Windows 7 надо выполнять команду по правой кнопке мыши "Запуск от имени администратора".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya писал(а):Если речь об этом скрипте, то там всё правильно
Извиняюсь, к вечеру голова опухла..
Batya писал(а):В Windows 7 надо выполнять команду по правой кнопке мыши "Запуск от имени администратора".
Ну, это не вариант - постоянно через этот диалог подобные команды запускать. Уж лучше nircmd прикрутить.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):
Batya писал(а):В Windows 7 надо выполнять команду по правой кнопке мыши "Запуск от имени администратора".
Ну, это не вариант - постоянно через этот диалог подобные команды запускать. Уж лучше nircmd прикрутить.
Я вёл речь только о регистрации (запуске файла TCWSHelp.exe), что выполнять "постоянно" не нужно.
Нет, я не сплю. Я просто медленно моргаю.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Ура! заработало!
у меня старая версия скрипта была.
На компе я админ - регистрация TCWSHelp прошла значит четко (1 раз) из ТС по ctrl+enter на файле с ключем TCWSHelp.exe /REGSERVER
Спасибо! наконец-то все как надо работает!
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Приветствую форумчан!
Хочу немного освежить тему и задать очередной вопрос. Скрипт копирования и имени выделенных файлов и копирования полного пути файлов прекрасно работает при использовании его на локальных дисках, либо же при "эмуляции" удаленных дисков как локальные с помощью программ типа WebDrive. Однако при подключении по ftp максимум, что удается получить это полный путь к файлу. А сейчас возникла необходимость получать только имя выделенного файла (файлов) именно при подключении по ftp. Может старожилы подскажут каким образом можно решить возникшую проблему, если это возможно... именно при подключении по ftp без использования сторонних программ типа WebDrive. Если же подобная уже тема обсуждалась, ткните носом в соответствующий топик, я к сожалению не смог найти.
Заранее благодарю за ответы.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

'========================================
' Копировать имена выбранных папок/файлов
'========================================
Const P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
With CreateObject("WScript.Shell")
  .Run """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"" /ef tcm(2017)""",, True
  A = .RegRead(P) : If A > 0 Then .RegWrite P, 0, "REG_DWORD"
  With CreateObject("InternetExplorer.Application")
    .Navigate("about:blank")
    Clip = .document.Parentwindow.ClipboardData.GetData("text")
    List = Replace(Clip, "\" + chr(13), chr(13))
    List = Replace(Clip, "/" + chr(13), chr(13))
    .document.ParentWindow.ClipboardData.SetData("text"), List
    .ExecWB 45, 2 : .Quit
  End With : If A > 0 Then .RegWrite P, A, "REG_DWORD"
End With
См. путь к TCFS2.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Flasher писал(а):
Спасибо, все заработало, но копирует имена фалов со слэшем. Пример:
"/009.png"
Каким образом можно избавиться от слэша перед именем файла?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

...
    List = Replace(Clip, "\", "")
    List = Replace(Clip, "/", "")
...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Возвращаемся к первому варианту на основе TCFS2.exe

Работает, но имена папок имеют в конце лишний слеш:
Локально:
Utils\

По ftp:
clip_art/

А с файлами все ОК.

И можно ли еще научить скрипт копировать полный путь (два ярлыка будет, разумеется)?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

skyinfire
Вообще должен работать и первый вариант и второй. Компонент IE, видимо, не срабатывает, хотя должен. А система не x64, случаем?
skyinfire писал(а):И можно ли еще научить скрипт копировать полный путь (два ярлыка будет, разумеется)?
В смысле? Есть же cm_CopyFullNamesToClip и cm_CopyNetNamesToClip.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

А система не x64, случаем?
да, W7х64
Есть же cm_CopyFullNamesToClip и cm_CopyNetNamesToClip.
Собственно, с них и началась вся эта тема. Скрипты для того и написаны были, что стандартные ТС комманды оставляли слеши до или после имен.

Тогда здесь мне дали скрипт
'=========================================
' Копировать имена выделенных папок/файлов
' Параметр: {%L|%l|%F|%f|%D|%d}
'=========================================
If WScript.Arguments.Count = 0 Then Wscript.Quit
Dim T
T = Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll, "\" + chr(13), chr(13))
Text2Clip Mid(T, 1, Len(T) - 2)

Sub Text2Clip(pText)
Dim TCS
On Error Resume Next
Set TCS = CreateObject("TCScript.Helper")
If Err.Number > 0 Then
Dim A
On Error GoTo 0
Const P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
With CreateObject("WScript.Shell")
A = .RegRead(P)
If A > 0 Then .RegWrite P, 0, "REG_DWORD"
With CreateObject("InternetExplorer.Application")
.Navigate("about:blank")
.document.ParentWindow.ClipboardData.SetData("text"), pText
End With
If A > 0 Then .RegWrite P, A, "REG_DWORD"
End With
Else
On Error GoTo 0
TCS.SetTextToClip(pText)
End If
End Sub
Он работает отлично - два ярлыка: с параметром %L копирует путь, с параметром %F - копирует имя. Но последний барахлит на FTP ресурсах.
Если этот скрипт допилить, то вопрос тоже был бы закрыт.
Ответить