View previous topic :: View next topic |
Author |
Message |
Victor_Dobrov
Joined: 15 Jul 2008 Posts: 50
|
(Separately) Posted: Sun Jul 27, 2008 09:51 Post subject: Быстрое переключение и экспорт настроек |
|
|
Предлагаю скрипт загрузки/экспорта/отката всех или указанных в командной строке секций файла Wincmd.ini. Это может пригодится при обмене конфигурациями или цветовыми настройками TC или для временного тестирования чужих ini-файлов. В моей сборке Total Commander Expert этот скрипт используется для быстрого переключения различных конфигураций и цветовых настроек.
Примеры параметров командной строки:нет - откроет диалог и при выборе ini/tset-файла применит настройки
/B - восстановить предыдущие настройки (если найден backup-файл)
/ini:<файл> Alls - экспортирует все секции (без истории) в ini-файл
/tset:<файл> <названия секций через пробел> - экспорт указанных секций
/tset:<файл> </add> Alls - экспорт всех секции (без истории) в tset-файл
без ключа /add в Wincmd.ini сначала удаляются все перечисленные секции Code: |
' TSet.vbs - загрузка/импорт/экспорт/откат настроек Total Commander, расширение возможностей утилиты TSet.exe.
' Возможности: 1) перезапустить коммандер с настройками из tset-файла; 2) экспортировать все или заданные секции настроек в ini или tset-файл 3)восстановить предыдущую конфигурацию
' параметры: 1) отсутствуют - загрузить настройки 2) /ini:<имя ini-файла> или /tset:<имя tset-файла>, <названия секций> для экспорта в файл, если не указывать, выполняется импорт из tset-файла настроек. 3) /B - откат настроек.
On Error Resume Next
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
ScriptPath = FSO.GetFile(WScript.ScriptFullName).ParentFolder & "\"
Commander_Path = WshShell.ExpandEnvironmentStrings("%COMMANDER_PATH%")
BaseIni = WshShell.ExpandEnvironmentStrings("%COMMANDER_INI%") : If BaseIni = "%COMMANDER_INI%" Then WScript.Quit 'BaseIni = TCS.MainINI
Set TCS = CreateObject("TCScript.Helper") 'пропишите ваш путь к TCWSHelp.exe
If not IsObject(TCS) Then WshShell.Run Quote(Commander_Path & "\Scripts\TCWSHelp.exe") & " /REGSERVER",,True : _
Set TCS = CreateObject("TCScript.Helper")
If not IsObject(TCS) Then MsgBox "Script Helper ActiveX for Total Commander" & vbTab & VbCr & VbCr & "для регистрации в системе выполните:" & VbCr & "TCWSHelp.exe /REGSERVER",vbSystemModal + vbInformation,"Отсутствует компонент ActiveX" : _
WScript.Quit 'ошибка регистрации
if WScript.Arguments.Count = 0 Then 'выбрать файл конфигурации
Result = OpenFile(4, ScriptPath, "Цвета и настройки TC (*.tset)|*.tset|Файлы конфигурации (*.ini)|*.ini|Все файлы (*.*)|*.*", 1)
If Result = "" Then WScript.Quit 'Отмена' в диалоге выбора файла
Else
Result = WScript.Arguments.Unnamed(0) 'tset-файл указан
End If
Result = WshShell.ExpandEnvironmentStrings(Result)
If FSO.FileExists(Result) Then 'применить настройки, если файл выбран или указан в параметрах
If FSO.GetExtensionName(Result) = "ini" Then
If InstrRev(Result, "\") = 0 Then Result = ScriptPath + Result 'имя файла было указано без пути
If Len(TCS.INIReadSection(Result, "Configuration")) = 0 Then MsgBox "Указанный файл конфигурации" & vbTab & VbCr & "не подходит к Total Commander",vbSystemModal + vbInformation,"Ошибка: " & FSO.GetFile(Result).Name : WScript.Quit
FSO.GetFile(BaseIni).Name = FSO.GetFile(BaseIni).Name & ".bak" 'зарезервировать текущие настройки
FSO.GetFile(Result).Copy BaseIni, true 'подсунуть TC выбранный ini-файл
WshShell.Run Quote(ScriptPath & "TSet.exe") & " /R"
Else
WshShell.Run Quote(ScriptPath & "TSet.exe ") & Result,,True
End If
MsgBox "Для отката к прежним настройкам выберите" & vbTab & VbCr & "в меню 'Тема' пункт 'Вернуть предыдущие...'",vbSystemModal + vbInformation,"Загружены новые настройки TC"
WScript.Quit
End If 'иначе экспорт конфигурации в ini или tset-файл
If WScript.Arguments(0) = "/B" Then 'возврат к резервной копии настроек
If FSO.FileExists(BaseIni & ".bak") Then
WshShell.Run Quote(ScriptPath & "TSet.exe") & " /B",,True
MsgBox "Прежние настройки восстановлены." & vbTab,vbSystemModal + vbInformation,"Откат настроек"
Else
MsgBox "Отсутствует резервный файл:" & vbCrLf & vbCrLf & BaseIni & ".bak",,"Ошибка отката настроек"
End If
WScript.Quit
End If
FileName = "Моя тема"
For i = 0 To WScript.Arguments.Unnamed.Count-1 'все параметры одной строкой
Sections = Sections + " " + WScript.Arguments.Unnamed.Item(i)
Next
If Len(Sections) = 0 or InStr(LCase(Sections), "alls") > 0 Then
Sections = "Configuration Confirmation Layout Lister Extensions Packer PackerPlugins ListerPlugins FileSystemPlugins ContentPlugins Shortcuts Buttonbar Tabstops Colors Searches LeftTabs RightTabs CustomFields HintsCustomField ThumbsCustomField DriveHints DirMenu User 800x600 1024x768 1280x800 1280x1024 1600x1200 1920x1440" 'список секций Wincmd.ini, экспортируемых по-умолчанию
FileName = "Мои настройки" 'добавьте свои разрешения монитора в Sections
End If
if WScript.Arguments.Named.Exists("ini") then
Result = WScript.Arguments.Named.Item("ini")
FileType = ".ini" 'экспортировать ini-файл TC
Else
Result = WScript.Arguments.Named.Item("tset")
FileType = ".tset" 'экпорт по-умолчанию
End If
Result = WshShell.ExpandEnvironmentStrings(Result)
If Result = "" Then 'в параметрах указаны только названия секций (или Alls)
Result = SaveFile(FileName + FileType, "*" + FileType)
If Result = "" Then WScript.Quit 'Отмена' в диалоге выбора файла
End If
If FSO.GetExtensionName(Result) = "" Then Result = Result + FileType 'в диалоге выбора имя введено без расширения
If InstrRev(Result, "\") = 0 Then Result = ScriptPath + Result 'имя файла было указано без пути
FSO.GetFile(Result).Name = FSO.GetFile(Result).Name & ".bak" : FSO.DeleteFile Result, True
If FileType = ".tset" Then WriteFile Result, "@TSET" & VbCrLf & "@MAIN" 'создать tset-файл
Sections = Split(LTrim(Sections))
For i = 0 To Ubound(Sections)
If Sections(i) = "800x600" Or Sections(i) = "1024x768" Or InStr(Sections(i), "1280x") > 0 Or InStr(Sections(i), "1600x") > 0 Or InStr(Sections(i), "1920x") > 0 Then Sections(i) = Sections(i) + " (8x16)"
Values = TCS.INIReadSection(BaseIni, Sections(i))
If Len(Values) > 0 Then 'секция найдена и не пуста
If FileType = ".tset" And Not WScript.Arguments.Named.Exists("add") Then _
WriteFile Result, "-[" & Sections(i) & "]" 'удалять секции из Wincmd.ini перед импортом tset-файла
TCS.INIWriteSection Result, Sections(i), Values
WriteFile Result, vbNullString 'для красоты разделим секции пустой строкой
End If
Next
Function SaveFile(File, Filters)
Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
objDialog.FileName = File
objDialog.FileType = Filters
intReturn = objDialog.OpenFileSaveDlg 'или OpenFileOpenDlg
If intReturn Then SaveFile = objDialog.FileName
End Function
Function OpenFile(Flags, InitialDir, Filters, Index)
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.InitialDir = InitialDir
objDialog.Flags = Flags
objDialog.FilterIndex = Index
objDialog.Filter = Filters
intResult = objDialog.ShowOpen
If intResult Then OpenFile = objDialog.FileName
End Function
Function WriteFile(File, Line)
Set TextStream = FSO.OpenTextFile(File, 8, True)
TextStream.WriteLine Line
TextStream.Close
End Function
Function Quote(PathFile) 'заключить в кавычки, если путь содержит пробелы
If InstrRev(PathFile," ") = 0 Then Quote = PathFile Else Quote = Chr(34) & PathFile & Chr(34)
End Function
|
P.S. Для работы скрипта требуется Script Helper ActiveX for Total Commander и утилита TSet.exe. |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2584 Location: Большая деревня Москва
|
|
Back to top |
|
|
Victor_Dobrov
Joined: 15 Jul 2008 Posts: 50
|
(Separately) Posted: Sun Jul 27, 2008 11:23 Post subject: |
|
|
Вахмурка
Неплохие возможности PowerPro снижает необходимость его установки, что не всегда и не на всех компах доступно.
Именно поэтому этот скрипт (TSet.vbs) специально рассчитан на Portable-сборку. |
|
Back to top |
|
|
Rodny
Joined: 24 Jan 2007 Posts: 949 Location: Могилёв, Беларусь
|
(Separately) Posted: Sun Jul 27, 2008 13:58 Post subject: |
|
|
Victor_Dobrov wrote: | Для работы скрипта требуется Script Helper ActiveX...
...этот скрипт (TSet.vbs) специально рассчитан на Portable-сборку. | А разве Script Helper не требует регистрации? Тогда какая ж это Portable? |
|
Back to top |
|
|
Victor_Dobrov
Joined: 15 Jul 2008 Posts: 50
|
(Separately) Posted: Sun Jul 27, 2008 15:58 Post subject: |
|
|
Rodny wrote: | А разве Script Helper не требует регистрации? Тогда какая ж это Portable? |
Нормальная. Скрипт автоматом регистрирует TCWSHelp.exe, если его нет и продолжает работу. Флешка с моей сборкой, подключенная к другому компу, запускает скрипт настроек без проблем. |
|
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
|