View previous topic :: View next topic |
Author |
Message |
_Johm
Joined: 14 May 2006 Posts: 119
|
(Separately) Posted: Mon Apr 05, 2010 18:02 Post subject: Кнопка, перетаскивание файла на панель, относительный путь |
|
|
Перетаскивая exe-файл на панель кнопок, можно ли научить тотал автоматом подставлять %COMMANDER_PATH% ? |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
|
Back to top |
|
 |
_Johm
Joined: 14 May 2006 Posts: 119
|
(Separately) Posted: Mon Apr 05, 2010 18:23 Post subject: |
|
|
Не понял про TWinKey. Как он может помочь в данной теме? |
|
Back to top |
|
 |
Вахмурка

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

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Mon Apr 05, 2010 18:45 Post subject: |
|
|
Вахмурка
Во-первых, теперь можно. В 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 |
|
 |
_Johm
Joined: 14 May 2006 Posts: 119
|
(Separately) Posted: Mon Apr 05, 2010 19:00 Post subject: |
|
|
Лихо вы картинки публикуете, спасибо. Но где вызываеться это меню (где нажать правую кнопку)? |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Mon Apr 05, 2010 19:07 Post subject: |
|
|
2Avada
Quote: | Во-первых, теперь можно. В TC 7.55 при перетаскивании на тулбар файла/подкаталога, находящегося где-то в каталоге или одном из подкаталогов запущенного TC, автоматически вместо соответствующей части абсолютного пути поставляется %COMMANDER_PATH% | Хорошая новость - действительно работает! Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%). Второе - я не нашел этого новшества в истории. Опять глаза разуть?
2Johm
Не правая кнопка, а в TWinKey ты настраиваешь свою для плагина TCDirMenu. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Mon Apr 05, 2010 19:37 Post subject: |
|
|
Вахмурка 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 |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Apr 05, 2010 23:15 Post subject: |
|
|
Также можно периодически с помощью скрипта обновлять 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 |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Apr 07, 2010 12:24 Post subject: |
|
|
Вахмурка wrote: | это не относится к другим переменным окружения (скажем, %SystemRoot%) | Для сих нужд вот этот скриптик очень кстати. |
|
Back to top |
|
 |
Andrey_A

Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sat Apr 17, 2010 02:47 Post subject: |
|
|
Quote: | Также можно периодически с помощью скрипта обновлять default.bar |
У меня файлы .bar лежат в папке BAR , и файлов панели несколько, можно ли разом автоматически менять путь с:\Тоtal... на "%Commander_Path%" во всех файлах в папке |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Sat Apr 17, 2010 15:44 Post subject: |
|
|
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 |
|
 |
Andrey_A

Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sat Apr 17, 2010 18:17 Post subject: |
|
|
Спасибо Batya, в который раз выручаешь! Всё шикарно работает, я сделал файл-список. где прописал все файлы требующие замены путей. Теперь ничего выделять не надо - нажал и порядок!!! |
|
Back to top |
|
 |
GGS
Joined: 02 May 2009 Posts: 322
|
(Separately) Posted: Sat Apr 17, 2010 20:07 Post subject: |
|
|
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 |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Apr 19, 2010 10:17 Post subject: |
|
|
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 |
|
 |
|
|
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
|