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

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

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

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

Сообщение skyinfire »

Flasher
Благодарю, стало понятнее, но не работает.
Сделал файл copy_name.vbs на основе последнего кода:

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

'=========================================
' Копировать имена выделенных папок/файлов
' Параметр: {%L|%l|%F|%f|%D|%d}
'=========================================
Text2Clip Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll, "\" + chr(13), chr(13))

Sub Text2Clip(pText)
  Dim A
  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
End Sub

повесил в меню, прописал пару команд %L, n (хотя и без них тоже ошибка).
Ошибка:
Изображение
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Сообщение skyinfire »

Круто!
Остался мелкий глюк: в конце скопированного имени добавляется теперь не слешь, а ЭНТЕР (переход на другую строку). Можно пофиксить?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

Text2Clip Replace(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll, "\" + chr(13), chr(13))
заменить на

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

T = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll
Text2Clip Replace(Left(T, Len(T) - 2), "\" + chr(13), chr(13))
И не надо забывать, что не только имени, но и имён. См. название скрипта. А перевод строки в любом случае является для списка разделителем.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
Batya
А в ваших вариантах скриптов параметр %Z не пригодился бы? Например:{%L|%l|%F|%f|%D|%d}%Z
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Ну, раз не всем очевидно, добавил.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Flasher
заменил.
Теперь при копировании имен нескольких папок сразу, в конце последней появляется слешь ))

Добавлено спустя 3 минуты:

Эпизод I. Скрытая угроза
Эпизод II. Атака клонов
Эпизод III. Месть Ситхов\
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Тогда заменить тот кусок на этот:

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

T = CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0), 1).ReadAll
T = Left(T, Len(T) - 2)
If Right(T, 1) = "\" Then T = Left(T, Len(T) - 1)
Text2Clip Replace(T, "\" + chr(13), chr(13))
Последний раз редактировалось Flasher Вт окт 11, 2011 23:42, всего редактировалось 1 раз.
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

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

Сообщение Flasher »

%L, соответственно.
skyinfire писал(а):Могу закинуть сотню на мобильник
Уже не первый человек, который предлагает мне деньги за труд (в данном случае - не только мой). :) Если бы все были такие щедрые, я бы тут давно разбогател. :lol: Спасибо, не надо, на мороженое себе оставьте. :wink:
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Ну, раз не всем очевидно, добавил.
Спасибо! Тоже тебе что ли сотню закинуть за это добавление… :D
skyinfire
Сообщения: 28
Зарегистрирован: Пн окт 10, 2011 21:13

Сообщение skyinfire »

Да, все работает.
А Вы вот здесь еще не поможете?
http://forum.wincmd.ru/viewtopic.php?p=84666
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

skyinfire писал(а):в конце скопированного имени добавляется теперь не слешь, а ЭНТЕР
Исправил скрипт в исходном посте.
Нет, я не сплю. Я просто медленно моргаю.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Batya
Чтобы при постановке на [..] копировался путь к родительскому каталогу.
Заодно и скрипт не вылетает на [..].
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Ну, логично. Одно с другим не вяжется. Двух зайцев сразу. :wink:
skyinfire писал(а):А Вы вот здесь еще не поможете?
Я бы помог, если бы дело не касалось проблем самого TC, тут скриптом не поможешь. Потом посмотрю, что там.
Ответить