Кнопка, перетаскивание файла на панель, относительный путь
Добавлено: Пн апр 05, 2010 18:02
Перетаскивая exe-файл на панель кнопок, можно ли научить тотал автоматом подставлять %COMMANDER_PATH% ?
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/

Хорошая новость - действительно работает! Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%). Второе - я не нашел этого новшества в истории. Опять глаза разуть?Во-первых, теперь можно. В TC 7.55 при перетаскивании на тулбар файла/подкаталога, находящегося где-то в каталоге или одном из подкаталогов запущенного TC, автоматически вместо соответствующей части абсолютного пути поставляется %COMMANDER_PATH%
И вот тут в игру вступает TWinKey.Вахмурка писал(а):Плохие новости: первое, это не относится к другим переменным окружения (скажем, %SystemRoot%).
Рискуя показаться некуртуазным, вынужден ответить утвердительно.Вахмурка писал(а):Второе - я не нашел этого новшества в истории. Опять глаза разуть?
То есть: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%.
Код: Выделить всё
TOTALCMD#BAR#DATA
"%Commander_Path%\Utils\WHS\ReplaceText.vbs" "%Commander_Path%\default.bar" "%Commander_Path%"
"%%Commander_Path%%"
%Commander_Path%\WCMICONS.DLL
Замена путей в default.bar
-1
Для сих нужд вот этот скриптик очень кстати.Вахмурка писал(а):это не относится к другим переменным окружения (скажем, %SystemRoot%)
У меня файлы .bar лежат в папке BAR , и файлов панели несколько, можно ли разом автоматически менять путь с:\Тоtal... на "%Commander_Path%" во всех файлах в папкеТакже можно периодически с помощью скрипта обновлять default.bar
Новый скрипт работает для выделенных файлов: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 Шикарный скрипт, но...Batya писал(а):Новый скрипт работает для выделенных файлов
Код: Выделить всё
---------------------------
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
---------------------------
ОК
---------------------------
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