Страница 2 из 2

Добавлено: Вт май 11, 2010 14:09
Batya
Den_Klimov

Код: Выделить всё

'==========================================================
' Замена нескольких параметров в wincmd.ini и рестарт TC
'==========================================================
Option Explicit
Dim WSH, FSO, TCIniFile
Set WSH   = CreateObject("WScript.Shell")
Set FSO   = CreateObject("Scripting.FileSystemObject")
TCIniFile = WSH.ExpandEnvironmentStrings("%COMMANDER_INI%")

'Пример замены нескольких параметров
ChangeIni "DirBrackets=0"  , "DirBrackets=1"
ChangeIni "StartupScreen=0", "StartupScreen=1"

'Рестарт TC
RestartTotal

'Выход
Quit

Sub Quit
  Set WSH = Nothing
  Set FSO = Nothing
  WScript.Quit
End Sub

Sub ChangeIni(pStr1, pStr2)
  Dim Text
  Text = FSO.OpenTextFile(TCIniFile, 1).ReadAll 
  Text = Replace(Text, pStr1, pStr2, 1, -1, 1) 
  FSO.OpenTextFile(TCIniFile, 2).Write Text
End Sub

'(c) Volniy
Sub RestartTotal
  Dim TCS, TCexe, Timeout, QuitByTimeOut
  Set TCS = CreateObject("TCScript.Helper")
  TCexe = """" & TCS.TCPath & "\totalcmd.exe"""
  'Завершаем работу ТС
  TCS.SendCommand "cm_Exit", True

  'Ожидание завершения работы ТС
  Timeout = 3000 ' Сколько ждать выключения в мсек
  Do
     Timeout = Timeout - 100
     If Timeout < 0 Then QuitByTimeOut = True: Exit Do
     WScript.Sleep 100
  Loop While TCS.IsRunningTC

  'Запускаем новый экземпляр программы
  If Not QuitByTimeOut Then WSH.Run TCexe

  Set TCS = Nothing
End Sub
17.05.2010 - Исправлено. Убрано обращение к внешнему скрипту.

Добавлено: Вс май 16, 2010 04:41
Den_Klimov
Batya
Спасибо. :)
1. Const ChangeIniFile = """C:\Путь\к скрипту\замены текста.vbs""" Ещё раз для тупых, к чему именно этот путь?
2. Работать будет если в пути %COMMANDER_PATH% использовать?

Добавлено: Вс май 16, 2010 13:41
Volniy
Замена секции
Внимание: существующая в ини-файле секция переписывается полностью!

Код: Выделить всё

'========================================================== 
' Замена секции в wincmd.ini и рестарт TC 
'========================================================== 
Option Explicit 
Dim WSH, TCS
Set WSH = CreateObject("WScript.Shell")
Set TCS = CreateObject("TCScript.Helper") 

' Примеры замены секции:
' 1) Записываемые данные - из другого ini-файла
TCS.INIWriteSection TCS.MainINI, "configuration2" ,TCS.INIReadSection("C:\some.ini","some_section")

' 2) Записываемые данные секции формируются на лету
TCS.INIWriteSection TCS.MainINI, "configuration3" ,"FirstPar=0" & Chr(0) & "SecondPar=1" & Chr(0) & "ThirdPar=-1" & Chr(0)

'Рестарт TC 
RestartTotal 
Set TCS = Nothing 
Set WSH = Nothing 
WScript.Quit 

Sub RestartTotal 
  Dim TCexe, Timeout, QuitByTimeOut 
  TCexe = """" & TCS.TCPath & "\totalcmd.exe""" 
  'Завершаем работу ТС 
  TCS.SendCommand "cm_Exit", True 

  'Ожидание завершения работы ТС 
  Timeout = 3000 ' Сколько ждать выключения в мсек 
  Do 
     Timeout = Timeout - 100 
     If Timeout < 0 Then QuitByTimeOut = True: Exit Do 
     WScript.Sleep 100 
  Loop While TCS.IsRunningTC 

  'Запускаем новый экземпляр программы 
  If Not QuitByTimeOut Then WSH.Run TCexe 

End Sub

Добавлено: Пн май 17, 2010 09:32
Batya
Den_Klimov писал(а):1. Const ChangeIniFile = """C:\Путь\к скрипту\замены текста.vbs""" Ещё раз для тупых, к чему именно этот путь?
2. Работать будет если в пути %COMMANDER_PATH% использовать?
Поскольку есть вопросы, решил упростить - убрал обращение к внешнему скрипту.