Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Кнопка, перетаскивание файла на панель, относительный путь
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Mon Apr 05, 2010 18:02    Post subject: Кнопка, перетаскивание файла на панель, относительный путь Reply with quote

Перетаскивая exe-файл на панель кнопок, можно ли научить тотал автоматом подставлять %COMMANDER_PATH% ?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Mon Apr 05, 2010 18:09    Post subject: Reply with quote

Насколько я знаю, нет, зато вставка переменных окружения есть в TWinKey.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Mon Apr 05, 2010 18:23    Post subject: Reply with quote

Не понял про TWinKey. Как он может помочь в данной теме?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Mon Apr 05, 2010 18:30    Post subject: Reply with quote


_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Mon Apr 05, 2010 18:45    Post subject: Reply with quote

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

_Johm
В указаном на скрине меню надо просто выбрать строку и щёлкнуть. В позиции курсора вставится указанная переменная.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.


Last edited by Avada on Mon Apr 05, 2010 21:23; edited 1 time in total
Back to top
View user's profile Send private message
_Johm



Joined: 14 May 2006
Posts: 119

Post (Separately) Posted: Mon Apr 05, 2010 19:00    Post subject: Reply with quote

Лихо вы картинки публикуете, спасибо. Но где вызываеться это меню (где нажать правую кнопку)?
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Mon Apr 05, 2010 19:07    Post subject: Reply with quote

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

2Johm
Не правая кнопка, а в TWinKey ты настраиваешь свою для плагина TCDirMenu.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10415
Location: Россия, Саратов

Post (Separately) Posted: Mon Apr 05, 2010 19:37    Post subject: Reply with quote

Вахмурка wrote:
Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%).

И вот тут в игру вступает TWinKey.

Вахмурка wrote:
Второе - я не нашел этого новшества в истории. Опять глаза разуть?

Рискуя показаться некуртуазным, вынужден ответить утвердительно.
Quote:
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%

То есть:
Quote:
20.12.09 Добавлено: При перетаскивании файла/каталога на панель инструментов или при добавлении каталога в меню Избранного (CTRL+D) все пути к файлам и подкаталогам, расположенным в каталоге Total Commander, сохраняются как относительные пути при помощи переменной окружения %COMMANDER_PATH%.

В порядке моральной компенсации могу сказать, что меня самого не так давно в эту фичу на ру-борде буквально ткнули мордой, что было особенно пикантно, поскольку я-то историю ещё и переводил...

А в TWinKey для удобства вызова спецменю (это команда Templates в секции для TCDirMenu на странице настроек "Плагины") лучше задать что-нибудь простенькое и при этом заведомо отсутствующее в стандартном функционале TC. У меня это клавиша Num5.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 05, 2010 23:15    Post subject: Reply with quote

Также можно периодически с помощью скрипта обновлять default.bar вот такой кнопкой:
Code:
TOTALCMD#BAR#DATA
"%Commander_Path%\Utils\WHS\ReplaceText.vbs" "%Commander_Path%\default.bar" "%Commander_Path%"
"%%Commander_Path%%"
%Commander_Path%\WCMICONS.DLL
Замена путей в default.bar


-1

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Apr 07, 2010 12:24    Post subject: Reply with quote

Вахмурка wrote:
это не относится к другим переменным окружения (скажем, %SystemRoot%)
Для сих нужд вот этот скриптик очень кстати.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sat Apr 17, 2010 02:47    Post subject: Reply with quote

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

У меня файлы .bar лежат в папке BAR , и файлов панели несколько, можно ли разом автоматически менять путь с:\Тоtal... на "%Commander_Path%" во всех файлах в папке
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Sat Apr 17, 2010 15:44    Post subject: Reply with quote

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

Новый скрипт работает для выделенных файлов:
Code:
'=============================================
' Замена текста в файлах из файла-списка
'
' Параметры:
' {текст для поиска} {текст для замены} {файл-список}
'=============================================
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

В скрипте поменял порядок параметров. Кнопка:
Code:
TOTALCMD#BAR#DATA
"%Commander_Path%\Utils\WHS\ReplaceText4FileList.vbs" "%Commander_Path%"
"%%Commander_Path%%" %L
%Commander_Path%\WCMICONS.DLL
Замена путей в выделенных файлах


-1

_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Sat Apr 17, 2010 18:17    Post subject: Reply with quote

Спасибо Batya, в который раз выручаешь! Всё шикарно работает, я сделал файл-список. где прописал все файлы требующие замены путей. Теперь ничего выделять не надо - нажал и порядок!!!
Back to top
View user's profile Send private message
GGS



Joined: 02 May 2009
Posts: 322

Post (Separately) Posted: Sat Apr 17, 2010 20:07    Post subject: Reply with quote

Batya wrote:
Новый скрипт работает для выделенных файлов

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

---------------------------
ОК   
---------------------------

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

---------------------------
ОК   
---------------------------

Возможно ли в подобной ситуации всё-таки продолжить работу с остальными файлами?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Mon Apr 19, 2010 10:17    Post subject: Reply with quote

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

Code:
'=============================================
' Замена текста в файлах из файла-списка
'
' Параметры:
' {текст для поиска} {текст для замены} {файл-список}
'=============================================
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 надо пропустить (как сейчас) или сделать, чтобы перезаписывались?
_________________
Нет, я не сплю. Я просто медленно моргаю.


Last edited by Batya on Mon Apr 19, 2010 17:42; edited 2 times in total
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group