Страница 1 из 6

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

Добавлено: Пн июл 25, 2005 09:39
Lovel
Можно ли сделать копирование полного пути в буфер с кавычками, если путь содержит пробелы? А то приходится ctrl-shift-enter и копировать из ком.стр. - не очень удобно.

Добавлено: Пн июл 25, 2005 12:38
Batya
Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?

Добавлено: Пн июл 25, 2005 12:43
D1P
Посмотри в сторону команды cm_CopyFullNamesToClip (вешается на хоткей или в меню). Хотя кавычки оно не вставляет.

Добавлено: Пн июл 25, 2005 13:08
Lovel
Batya писал(а):Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?
Если можно. Вроде бы проблемы только с этим.
D1P писал(а):cm_CopyFullNamesToClip. Хотя кавычки оно не вставляет.
Вот именно, что не вставляет :)

Добавлено: Пн июл 25, 2005 15:34
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.

Добавлено: Вт июл 26, 2005 10:18
Lovel
Batya писал(а): Set TCS = CreateObject("TCScript.Helper")
Вот тут ругается: "ActiveX component can't create object: 'TCScript.Helper'". Правда подозреваю, что это у меня с виндой что-то.

Добавлено: Вт июл 26, 2005 10:47
Batya
Lovel
Я же писал, что нужен TCWSHelp - >>>>> WSH Helper for TC beta9 <<<<<.
Скопируй его в отдельную папку, например, d:\TotalCmd\Utils\TCWSHelp, и зарегистрируй - просто запусти TCWSHelp.exe. После этого данный объект можно будет использовать в скриптах (что в моем скрипте и происходит).

Добавлено: Вт июл 26, 2005 12:11
Lovel
Batya писал(а):Я же писал, что нужен TCWSHelp - [url=http://wincmd.ru/files/tcwshelp_b9.zip]
Я не понял просто, спасибо большое, все работает.

Добавлено: Ср фев 03, 2010 03:31
Flasher
Batya
Ставил давно, недавно вспомнил о нём.
Не хочет скрипт работать. Установка нового TCWSHelp не помогало. "%L" само собой прописан.
Пишет синтаксическую ошибку: строка 9 (как у Lovel), символ 15, код 800A03EA. Что-то я не узрил толком ошибки. Что может быть не так?

Добавлено: Ср фев 03, 2010 12:37
sa
Flasher писал(а):Что может быть не так?
Скорее всего в файле скрипта

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

Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1) 
записан не в одну строчку, как у Batya, а в две.

Добавлено: Ср фев 03, 2010 13:39
Flasher
sa писал(а):записан не в одну строчку, как у Batya, а в две.
Да, сработало, только если копировать несколько, получается так
"Путь/Name1.*"КВАДРАТ"Путь/Name2.*"

Добавлено: Ср фев 03, 2010 14:45
sa
Flasher писал(а):КВАДРАТ
Это символ возврата каретки: chr(13). Отделяет в буфере одну запись от другой. А чего хотелось бы?

Добавлено: Ср фев 03, 2010 15:17
Flasher
sa писал(а):А чего хотелось бы?
Хотелось бы списком, как в случае с cm_CopyFullNamesToClip .

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

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

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

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

TCS.SetTextToClip(Left(FileNames, Len(FileNames) - 2))

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