Добавлено спустя 2 минуты:
Flasher
Да я так и думалСперва меняется имя первого файла на имя отличное от второго, потом имя второго на имя первого, а потом имя первого на имя второго.
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Ну, это легко. Пожалуйста:cojoc писал(а):Кстати, скрипт по теме для переименования (обмена) имён двух файлов не помешал бы
Код: Выделить всё
' Поменять местами имена двух файлов
' Параметры: "<Путь к первому файлу>" "<Путь ко второму файлу>"
' Пример: "%%COMMANDER_PATH%%\Colors\Colors.ini" "%%COMMANDER_PATH%%\Colors\Colors_.ini"
'=====================================================
With CreateObject("WScript.Shell")
F1 = .ExpandEnvironmentStrings(WScript.Arguments(0))
F2 = .ExpandEnvironmentStrings(WScript.Arguments(1))
End With
With CreateObject("Scripting.FileSystemObject")
.MoveFile F1, F1 & "x"
.MoveFile F2, F1
.MoveFile F1 & "x", F2
End WithРуками перезагружуТак а как вы перезапускаете ТС?
А перезапуск как отдельная манипуляция уже не в счёт?cojoc писал(а):Кстати для смены цветовой темы у способа при помощи переименования есть один плюс - одна кнопка вместо двух.
Для этого нужны хотя бы все значения ключей обеих схем.cojoc писал(а):А есть ли аналог (скриптовой или утилита какая) кнопки с двумя состояниями (двумя командами) (Push-button) для TC ?
Вариант на основе скрипта от Batya для вкл/выкл внутренних ассоциаций. Переименовывает правда не файлы, а секции в INI-файле с разными наборами цветов ([Colors] и [Colors2]). Противникам нажатий клавиш с помощью SendKeys следует использовать предлагаемый скрипт с заданием произвольного параметра.cojoc писал(а):Решил создать кнопку для изменения цветовой схемы TC.
Код: Выделить всё
'Описание: Переключает цвета в TC, переименовывая друг в друга секции [Colors] и [Colors2]
' Для вызова команд TC используется утилита TCMC (надо указать свой путь к ней)
'Параметр: Если есть (любой), то вместо обновления цветов в текущем сеансе, TC стартует снова
'--------------------------------------------------------------------------------------------
Option Explicit
Dim TCMC, TC, F, FSO, WSH, Str1 , Str2, Text
'======== Укажите свой путь к TCMC.exe =======
TCMC = "%COMMANDER_PATH%\Utils\TCMC\TCMC.exe"
'=============================================
TC = "%COMMANDER_PATH%\totalcmd.exe"
F = "%COMMANDER_PATH%\wincmd.ini"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Str1 = "[Colors]"
Str2 = "[Colors2]"
F = GetPath(F)
TC = GetPath(TC)
TCMC = GetPath(TCMC)
Text = FSO.OpenTextFile(F, 1).ReadAll
If InStr(1, Text, Str1, 1) > 0 Then Text = Replace(Text, Str1, "#" & Str1 , 1, -1, 1)
If InStr(1, Text, Str2, 1) > 0 Then Text = Replace(Text, Str2, Str1, 1, -1, 1)
If InStr(1, Text, "#" & Str1, 1) > 0 Then Text = Replace(Text, "#" & Str1, Str2, 1, -1, 1)
FSO.OpenTextFile(F, 2).Write Text
' Wscript.Sleep(200)
If WScript.Arguments.Count > 0 Then
WSH.Run """" & TCMC & """ CM24340", 1, True 'Выход
WSH.Run """" & TC & """" , 1, True 'Запуск TC
Else
WSH.Run TCMC & " CM494", 1, False 'cm_ColorConfig
Wscript.Sleep(100)
WSH.SendKeys "+{TAB 5} {ENTER}{TAB 2}"
End If
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function{TAB 2} для чего?WSH.SendKeys "+{TAB 5} {ENTER}{TAB 2}"
Это по умолчанию идёт, можно убрать.WSH.Run TCMC & " CM494", 1, False
Код: Выделить всё
' Поменять местами имена двух файлов и обновить цвета
' Параметры: "<Отн. путь к первому файлу>" "<Отн. путь ко второму файлу>"
' Пример: "Colors.ini" "Colors_.ini"
'=====================================================
With CreateObject("WScript.Shell")
TC = .Environment("Process")("COMMANDER_PATH") & "\"
F1 = TC & WScript.Arguments(0)
F2 = TC & WScript.Arguments(1)
With CreateObject("Scripting.FileSystemObject")
If .FileExists(F1) And .FileExists(F2) Then
.MoveFile F1, F1 & "'"
.MoveFile F2, F1
.MoveFile F1 & "'", F2
End If
End With
.Exec(TC & "Utils\TCMC\TCMC.exe CM494")
WScript.Sleep 60 ' Не работает - увеличиваем до 100
.SendKeys "+{TAB 5} ~"
End WithКод: Выделить всё
[em_SwapColors]
cmd=%COMMANDER_PATH%\ADDONS\kITUP\kITUP.exe
param=Light.up
menu=Сменить цвета
button=%COMMANDER_PATH%\ADDONS\kITUP\kITUP.exe,2Код: Выделить всё
[Configuration]
DefaultDirectory=%COMMANDER_PATH%
;Заменяем цветовую схему Total Commander
[im|wincmd.ini|Colors]
BackColor=788488
;и так далее...
;Меняем действие кнопки на противоположное
[im|usercmd.ini|em_SwapColors]
param=Light.up
;Перезапуск Total Commander
[per|totalcmd.exe]Код: Выделить всё
[Configuration]
DefaultDirectory=%COMMANDER_PATH%
;Заменяем цветовую схему Total Commander
[im|wincmd.ini|Colors]
BackColor=16579836
;и так далее...
;Меняем действие кнопки на противоположное
[im|usercmd.ini|em_SwapColors]
param=Dark.up
;Перезапуск Total Commander
[per|totalcmd.exe]Я не совсем понял о каких ключах идёт речь, поясните пожалуйста.Вообще, конечно, с учётом числа ключей ColorFilterXColor (их может быть под сотню) с установкой значений лучше не заморачиваться, смена имён файлов будет куда быстрей отрабатывать. ...
Т.е. надо будет перезагрузиться или это не нужно будет? Если надо тогда зачем ещё один да ещё с утилитой?Flasher писал(а):Без как раз.
Ключей у меня примерно 30 и в двух схемах они одинаковые, только некоторые значения разные.Вообще, конечно, с учётом числа ключей ColorFilterXColor (их может быть под сотню) с установкой значений лучше не заморачиваться, смена имён файлов будет куда быстрей отрабатывать. Если же эти ключи учитывать при смене не надо, то можно и менять значения.