Кнопка, перетаскивание файла на панель, относительный путь

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

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

_Johm
Сообщения: 119
Зарегистрирован: Вс май 14, 2006 20:03

Кнопка, перетаскивание файла на панель, относительный путь

Сообщение _Johm »

Перетаскивая exe-файл на панель кнопок, можно ли научить тотал автоматом подставлять %COMMANDER_PATH% ?
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Насколько я знаю, нет, зато вставка переменных окружения есть в TWinKey.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
_Johm
Сообщения: 119
Зарегистрирован: Вс май 14, 2006 20:03

Сообщение _Johm »

Не понял про TWinKey. Как он может помочь в данной теме?
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Изображение
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Вахмурка
Во-первых, теперь можно. В TC 7.55 при перетаскивании на тулбар файла/подкаталога, находящегося где-то в каталоге или одном из подкаталогов запущенного TC, автоматически вместо соответствующей части абсолютного пути поставляется %COMMANDER_PATH%. То же относится и к добавлению в меню избранных каталогов.
Во-вторых, да, в TWinKey теперь можно создать специальное контекстное меню, предназначеннное только для настроек тулбара и пользовательских меню. С переменными, параметрами для подстановки в сответствующее поле и прочим, на что фантазии хватит. Собственно, примерчик такого меню в дистрибутиве TWinKey уже имеется.

_Johm
В указаном на скрине меню надо просто выбрать строку и щёлкнуть. В позиции курсора вставится указанная переменная.
Последний раз редактировалось Avada Пн апр 05, 2010 21:23, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
_Johm
Сообщения: 119
Зарегистрирован: Вс май 14, 2006 20:03

Сообщение _Johm »

Лихо вы картинки публикуете, спасибо. Но где вызываеться это меню (где нажать правую кнопку)?
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

2Avada
Во-первых, теперь можно. В TC 7.55 при перетаскивании на тулбар файла/подкаталога, находящегося где-то в каталоге или одном из подкаталогов запущенного TC, автоматически вместо соответствующей части абсолютного пути поставляется %COMMANDER_PATH%
Хорошая новость - действительно работает! Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%). Второе - я не нашел этого новшества в истории. Опять глаза разуть?

2Johm
Не правая кнопка, а в TWinKey ты настраиваешь свою для плагина TCDirMenu.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Вахмурка писал(а):Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%).
И вот тут в игру вступает TWinKey.
Вахмурка писал(а):Второе - я не нашел этого новшества в истории. Опять глаза разуть?
Рискуя показаться некуртуазным, вынужден ответить утвердительно.
20.12.09 Added: When dragging file/dir to button bar, or adding dir to Ctrl+D menu, store all paths below Total Commander path as relative path with environment variable %COMMANDER_PATH%
То есть:
20.12.09 Добавлено: При перетаскивании файла/каталога на панель инструментов или при добавлении каталога в меню Избранного (CTRL+D) все пути к файлам и подкаталогам, расположенным в каталоге Total Commander, сохраняются как относительные пути при помощи переменной окружения %COMMANDER_PATH%.
В порядке моральной компенсации могу сказать, что меня самого не так давно в эту фичу на ру-борде буквально ткнули мордой, что было особенно пикантно, поскольку я-то историю ещё и переводил...

А в TWinKey для удобства вызова спецменю (это команда Templates в секции для TCDirMenu на странице настроек "Плагины") лучше задать что-нибудь простенькое и при этом заведомо отсутствующее в стандартном функционале TC. У меня это клавиша Num5.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Batya
Сообщения: 2237
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Также можно периодически с помощью скрипта обновлять default.bar вот такой кнопкой:

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

TOTALCMD#BAR#DATA
"%Commander_Path%\Utils\WHS\ReplaceText.vbs" "%Commander_Path%\default.bar" "%Commander_Path%"
"%%Commander_Path%%"
%Commander_Path%\WCMICONS.DLL
Замена путей в default.bar


-1
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Вахмурка писал(а):это не относится к другим переменным окружения (скажем, %SystemRoot%)
Для сих нужд вот этот скриптик очень кстати.
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Также можно периодически с помощью скрипта обновлять default.bar
У меня файлы .bar лежат в папке BAR , и файлов панели несколько, можно ли разом автоматически менять путь с:\Тоtal... на "%Commander_Path%" во всех файлах в папке
Аватара пользователя
Batya
Сообщения: 2237
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Andrey_A писал(а):У меня файлы .bar лежат в папке BAR , и файлов панели несколько, можно ли разом автоматически менять путь с:\Тоtal... на "%Commander_Path%" во всех файлах в папке
Новый скрипт работает для выделенных файлов:

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

'=============================================
' Замена текста в файлах из файла-списка
'
' Параметры:
' {текст для поиска} {текст для замены} {файл-список}
'=============================================
Option Explicit
Dim FSO, FF, F, List, Str1, Str2, Text
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
  FF   = .Arguments(2)
  Str1 = .Arguments(0)
  Str2 = .Arguments(1)
End With
List = Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)

For Each F In List
  F = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F))
  If FSO.FileExists(F) Then
    Text = FSO.OpenTextFile(F, 1).ReadAll
    Text = Replace(Text, Str1, Str2, 1, -1, 1)
    FSO.OpenTextFile(F, 2).Write Text
  End If
Next

Set FSO = Nothing
WScript.Quit 0
В скрипте поменял порядок параметров. Кнопка:

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

TOTALCMD#BAR#DATA
"%Commander_Path%\Utils\WHS\ReplaceText4FileList.vbs" "%Commander_Path%"
"%%Commander_Path%%" %L
%Commander_Path%\WCMICONS.DLL
Замена путей в выделенных файлах


-1 
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

Спасибо Batya, в который раз выручаешь! Всё шикарно работает, я сделал файл-список. где прописал все файлы требующие замены путей. Теперь ничего выделять не надо - нажал и порядок!!!
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

Batya писал(а):Новый скрипт работает для выделенных файлов
Шикарный скрипт, но...
Среди выделенных файлов попался один read only, получаем:

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

---------------------------
Windows Script Host
---------------------------
Сценарий:	F:\Program Files\TotalCmd\TOOLs\VBScript\ReplaceText4FileList.vbs
Строка:	22
Символ:	5
Ошибка:	Разрешение отклонено
Код:	800A0046
Источник: 	Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------
и дальнейшая обработка файлов не производится.
Если попадаем на пустой файл:

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

---------------------------
Windows Script Host
---------------------------
Сценарий:	F:\Program Files\TotalCmd\TOOLs\VBScript\ReplaceText4FileList.vbs
Строка:	20
Символ:	5
Ошибка:	Ввод данных за пределами файла
Код:	800A003E
Источник: 	Ошибка выполнения Microsoft VBScript

---------------------------
ОК   
---------------------------
Возможно ли в подобной ситуации всё-таки продолжить работу с остальными файлами?
Аватара пользователя
Batya
Сообщения: 2237
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

GGS писал(а):Возможно ли в подобной ситуации всё-таки продолжить работу с остальными файлами?

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

'=============================================
' Замена текста в файлах из файла-списка
'
' Параметры:
' {текст для поиска} {текст для замены} {файл-список}
'=============================================
Option Explicit
Dim FSO, WSH, FF, F, List, Str1, Str2, Errors
Set FSO    = CreateObject("Scripting.FileSystemObject")
Set WSH    = CreateObject("WScript.Shell")
Set Errors = CreateObject("Scripting.Dictionary")

With WScript
  FF   = .Arguments(2)
  Str1 = .Arguments(0)
  Str2 = .Arguments(1)
End With
List = Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)

On Error Resume Next
For Each F In List
  Main F, Str1, Str2
  If Err.Number > 0 Then
    Errors.Add F, Err.Description
    Err.Clear
  End If
Next
On Error GoTo 0

If Errors.Count > 0 Then  MsgBox JoinErr(Errors), 0, "Замена текста в файлах из файла-списка"

Set Errors = Nothing
Set WSH    = Nothing
Set FSO    = Nothing
WScript.Quit 0

Sub Main(pPath, pStr1, pStr2)
  Dim lText, lPath
  If pPath <> "" Then
    lPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
    If FSO.FileExists(lPath) Then
      If FSO.GetFile(lPath).Size > 0 Then
        lText = FSO.OpenTextFile(lPath, 1).ReadAll
        If InStr(1, lText, pStr1, 1) > 0 Then
          lText = Replace(lText, pStr1, pStr2, 1, -1, 1)
          FSO.OpenTextFile(lPath, 2).Write lText
        End If
      End If
    End If
  End If
End Sub

Function JoinErr(pDic)
  Dim lKey
  For Each lKey In pDic
    JoinErr = JoinErr & vbNewLine & _
              "Файл """ & lKey & """ - " & pDic(lKey)
  Next
  JoinErr = "Для следующих файлов операция завершена с ошибками:" & vbNewLine & JoinErr
End Function
Если были ошибки, выдается их список.
Read-only надо пропустить (как сейчас) или сделать, чтобы перезаписывались?
Последний раз редактировалось Batya Пн апр 19, 2010 17:42, всего редактировалось 2 раза.
Нет, я не сплю. Я просто медленно моргаю.
Ответить