Копирование полного пути в буфер
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3, 4, 5, 6  Next  :| |:
Total Commander -> Общие вопросы

#1: Копирование полного пути в буфер Author: Lovel PostPosted: Mon Jul 25, 2005 09:39
    —
Можно ли сделать копирование полного пути в буфер с кавычками, если путь содержит пробелы? А то приходится ctrl-shift-enter и копировать из ком.стр. - не очень удобно.

#2:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Jul 25, 2005 12:38
    —
Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?

#3:  Author: D1PLocation: Тбилиси PostPosted: Mon Jul 25, 2005 12:43
    —
Посмотри в сторону команды cm_CopyFullNamesToClip (вешается на хоткей или в меню). Хотя кавычки оно не вставляет.

#4:  Author: Lovel PostPosted: Mon Jul 25, 2005 13:08
    —
Batya wrote:
Могу написать скриптик.
В кавычки заключать только имена с пробелами или все?

Если можно. Вроде бы проблемы только с этим.

D1P wrote:
cm_CopyFullNamesToClip. Хотя кавычки оно не вставляет.

Вот именно, что не вставляет Smile

#5:  Author: BatyaLocation: Москва, Россия PostPosted: Mon Jul 25, 2005 15:34
    —
Lovel
Code:
'==================================================
' Копирование в буфер путей файлов с кавычками

' В параметрах вызова из 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.


Last edited by Batya on Thu Feb 04, 2010 20:51; edited 2 times in total

#6:  Author: Lovel PostPosted: Tue Jul 26, 2005 10:18
    —
Batya wrote:

Set TCS = CreateObject("TCScript.Helper")

Вот тут ругается: "ActiveX component can't create object: 'TCScript.Helper'". Правда подозреваю, что это у меня с виндой что-то.

#7:  Author: BatyaLocation: Москва, Россия PostPosted: Tue Jul 26, 2005 10:47
    —
Lovel
Я же писал, что нужен TCWSHelp - >>>>> WSH Helper for TC beta9 <<<<<.
Скопируй его в отдельную папку, например, d:\TotalCmd\Utils\TCWSHelp, и зарегистрируй - просто запусти TCWSHelp.exe. После этого данный объект можно будет использовать в скриптах (что в моем скрипте и происходит).

#8:  Author: Lovel PostPosted: Tue Jul 26, 2005 12:11
    —
Batya wrote:
Я же писал, что нужен TCWSHelp - [url=http://wincmd.ru/files/tcwshelp_b9.zip]

Я не понял просто, спасибо большое, все работает.

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

#10:  Author: sa PostPosted: Wed Feb 03, 2010 13:37
    —
Flasher wrote:
Что может быть не так?
Скорее всего в файле скрипта
Code:
Set TempFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1)
записан не в одну строчку, как у Batya, а в две.

#11:  Author: FlasherLocation: Москва PostPosted: Wed Feb 03, 2010 14:39
    —
sa wrote:
записан не в одну строчку, как у Batya, а в две.

Да, сработало, только если копировать несколько, получается так
"Путь/Name1.*"КВАДРАТ"Путь/Name2.*"

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

#13:  Author: FlasherLocation: Москва PostPosted: Wed Feb 03, 2010 16:17
    —
sa wrote:
А чего хотелось бы?

Хотелось бы списком, как в случае с cm_CopyFullNamesToClip .

#14:  Author: sa PostPosted: Wed Feb 03, 2010 16:45
    —
Flasher wrote:
Хотелось бы списком
Скорее всего, достаточно добавить символ перевода строки chr(10):
Code:
FileNames = FileNames & StrInFile & chr(13) & chr(10)
Добавил 03.02.10:
ну и 1 поменять на 2
Code:
TCS.SetTextToClip(Left(FileNames, Len(FileNames) - 2))


Last edited by sa on Wed Feb 03, 2010 17:45; edited 1 time in total

#15:  Author: FlasherLocation: Москва PostPosted: Wed Feb 03, 2010 17:06
    —
sa wrote:
Скорее всего, достаточно добавить символ перевода строки chr(10)

Ага, почти, только в конце списка каретка появляется.) С одним файлом та же история.



Total Commander -> Общие вопросы


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3, 4, 5, 6  Next  :| |:
Page 1 of 6

Powered by phpBB © 2001, 2005 phpBB Group