Копирование полного пути в буфер

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

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

Lovel
Сообщения: 6
Зарегистрирован: Пн июл 25, 2005 09:37

Копирование полного пути в буфер

Сообщение Lovel »

Можно ли сделать копирование полного пути в буфер с кавычками, если путь содержит пробелы? А то приходится ctrl-shift-enter и копировать из ком.стр. - не очень удобно.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?
Аватара пользователя
D1P
Сообщения: 2987
Зарегистрирован: Пн дек 20, 2004 18:30
Откуда: Тбилиси
Контактная информация:

Сообщение D1P »

Посмотри в сторону команды cm_CopyFullNamesToClip (вешается на хоткей или в меню). Хотя кавычки оно не вставляет.
Lovel
Сообщения: 6
Зарегистрирован: Пн июл 25, 2005 09:37

Сообщение Lovel »

Batya писал(а):Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?
Если можно. Вроде бы проблемы только с этим.
D1P писал(а):cm_CopyFullNamesToClip. Хотя кавычки оно не вставляет.
Вот именно, что не вставляет :)
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lovel

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

'==================================================
' Копирование в буфер путей файлов с кавычками

' В параметрах вызова из TC должно быть прописано:
' %L
'==================================================
Option Explicit
'===== Изменяемые параметры =======================
Dim Delimiter
Delimiter = vbNewLine 'Разделитель списка
'==================================================
Dim TempFile, TCS
Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1)
Set TCS = CreateObject("TCScript.Helper")

Dim StrInFile, FileNames, M1
FileNames = ""
Do While Not TempFile.AtEndOfStream
  StrInFile = TempFile.ReadLine
  If InStr(StrInFile, " ") <> 0 Then
    StrInFile = chr(34) & StrInFile & chr (34)
  End If
  FileNames = FileNames & StrInFile & Delimiter
Loop
TCS.SetTextToClip(Left(FileNames, Len(FileNames) - Len(Delimiter)))
'M1 = MsgBox("Копирование выполнено", vbOKOnly + vbInformation, "Результат")
Set TempFile = Nothing
Set TCS = Nothing
Wscript.Quit
Сохрани код в файле *.vbs, повесь файл на кнопку, пропиши в параметрах кнопки %L. Для работы (для занесения в буфер) используется TCWSHelp.
Если нужно, чтобы все строки заключались в кавычки, закомментируй проверку условия вхождения пробела в имя, т.е. строки 20 и 22 - поставь в начале строк апостроф.
Если хочешь, чтобы выводилось сообщение после работы скрипта, раскомментируй строку 26.
Последний раз редактировалось Batya Чт фев 04, 2010 19:51, всего редактировалось 2 раза.
Lovel
Сообщения: 6
Зарегистрирован: Пн июл 25, 2005 09:37

Сообщение Lovel »

Batya писал(а): Set TCS = CreateObject("TCScript.Helper")
Вот тут ругается: "ActiveX component can't create object: 'TCScript.Helper'". Правда подозреваю, что это у меня с виндой что-то.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lovel
Я же писал, что нужен TCWSHelp - >>>>> WSH Helper for TC beta9 <<<<<.
Скопируй его в отдельную папку, например, d:\TotalCmd\Utils\TCWSHelp, и зарегистрируй - просто запусти TCWSHelp.exe. После этого данный объект можно будет использовать в скриптах (что в моем скрипте и происходит).
Lovel
Сообщения: 6
Зарегистрирован: Пн июл 25, 2005 09:37

Сообщение Lovel »

Batya писал(а):Я же писал, что нужен TCWSHelp - [url=http://wincmd.ru/files/tcwshelp_b9.zip]
Я не понял просто, спасибо большое, все работает.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya
Ставил давно, недавно вспомнил о нём.
Не хочет скрипт работать. Установка нового TCWSHelp не помогало. "%L" само собой прописан.
Пишет синтаксическую ошибку: строка 9 (как у Lovel), символ 15, код 800A03EA. Что-то я не узрил толком ошибки. Что может быть не так?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Что может быть не так?
Скорее всего в файле скрипта

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

Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1) 
записан не в одну строчку, как у Batya, а в две.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):записан не в одну строчку, как у Batya, а в две.
Да, сработало, только если копировать несколько, получается так
"Путь/Name1.*"КВАДРАТ"Путь/Name2.*"
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):КВАДРАТ
Это символ возврата каретки: chr(13). Отделяет в буфере одну запись от другой. А чего хотелось бы?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):А чего хотелось бы?
Хотелось бы списком, как в случае с cm_CopyFullNamesToClip .
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Хотелось бы списком
Скорее всего, достаточно добавить символ перевода строки chr(10):

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

FileNames = FileNames & StrInFile & chr(13) & chr(10)
Добавил 03.02.10:
ну и 1 поменять на 2

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

TCS.SetTextToClip(Left(FileNames, Len(FileNames) - 2))
Последний раз редактировалось sa Ср фев 03, 2010 16:45, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):Скорее всего, достаточно добавить символ перевода строки chr(10)
Ага, почти, только в конце списка каретка появляется.) С одним файлом та же история.
Ответить