Скрипты для Total Commander

  1. Offline

    Andrey_A

    Пользователь

    Posts: 275

    Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия
    Тема тестирования скриптов создана для увеличения функциональности Total Commander
    Всё это делается для тех, кто хочет экономить время и автоматизировать работу
    Огромное спасибо участникам, авторам и всем повлиявшим на тему
    #/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
    В этой теме Каждый может выложить свой скрипт, написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... - главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению.
    #/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
    В теме "Тестирование и заказ скриптов" Каждый может протестировать, дать свой комментарий (все комментарии из этой темы будут удаляться)...если есть интересная идея, вы так же можете поделиться ей в соседней теме и заказать скрипт, а вдруг она покажется интересной для авторов...
    #/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#



    Сообщение отредактировал LonerD 25 апреля 2017 - 04:38

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    22 ноября 2011 - 13:03 / #1
  2. Offline

    Andrey_A

    Пользователь

    Posts: 275

    RunSelectInABCTextConverter.vbs
    Конвертирование ВЫДЕЛЕННЫХ "текстовых" файлов ПО ОЧЕРЕДИ программой ABCtext.exe
    Скачать ABCTextConverter
    ' RunSelectInABCTextConverter.vbs
    '========================   Описание   =====================================
    ' Конвертирование ВЫДЕЛЕННЫХ "текстовых" файлов ПО ОЧЕРЕДИ программой ABCtext.exe
    '========================  Параметры =====================================
    ' 1-й параметр: Cписок файлов
    ' 2-й параметр: путь\куда\конвертировать
    ' 3-й параметр: расширение ABC
    ' 4-й параметр: параметр1 ABC
    ' 5-й параметр: параметр2 ABC
    ' Дополнительные 3, 4, 5 параметры необходимо смотреть в справке программы
    '========================    Примеры    =====================================
    ' %L %t "pdf" 3 0         -    Конвертация .TXT под курсором в .PDF
    ' %L %t "txt" 0 5          -    Конвертация .HTML .HTM .MHT под курсором в .TXT (ANSI)
    ' %L %t "html" 7 1      -    Конвертация .DOC .DOCX .RTF под курсором в .HTML
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (07.10.2010 - 08.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru

    Option Explicit
    '====================   Изменяемые пути   ==================================
    Program = "%COMMANDER_PATH%\Utilities\Texts\AbcText\Abctext.exe"
    '========================================================================
    If WScript.Arguments.Count < 5 Then
      MsgBox "Не хватает параметров!" & vbNewLine &_
      "Должно быть минимум ПЯТЬ параметра" & vbNewLine &_
      "Примкр: %L %t ''html'' 7 1", vbOKOnly & vbInformation,_
      "Конвертирование выделенных ''текстовых'' файлов"
      WScript.Quit
    End If

    Dim FSO, WSH, ListFile, Program, Param, TPath, Name, Ext, P1, P2
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")

    Program = GetPath(Program)
    If Not FSO.FileExists(Program) Then
      MsgBox "Не правильно указан путь до Abctext.exe", vbOKOnly & vbInformation,_
      "Конвертирование выделенных ''текстовых'' файлов"
      WsEnd
    End If

    With WScript
      TPath = .Arguments(1) : Ext = .Arguments(2) : P1 = .Arguments(3) : P2 = .Arguments(4)
      Set ListFile = FSO.OpenTextFile(GetPath(.Arguments(0)), 1)
    End With

    Do While Not ListFile.AtEndOfStream
        Param = ListFile.ReadLine : Name = FSO.GetBaseName(Param)
        WSH.Run Chr(34) & Program & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34) &_
        Chr(32) & Chr(34) & TPath & Name & "." & Ext & Chr(34) & Chr(32) & P1 & Chr(32) & P2 ,2,True
    Loop

    ListFile.Close : Set ListFile = Nothing : WsEnd
    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub WsEnd : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit : End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:59

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:06 / #81
  3. Offline

    Andrey_A

    Пользователь

    Posts: 275

    InstalFontInWincmd.vbs
    Установить Шрифт для Total Commander
    Используется FunctionsINIRWS.vbs и TCMC.exe - файлы можете скачать в шапке темы

    ' InstallFont.vbs
    '========================   Описание   ====================================
    ' Копирует и устанавливает выделенные шрифты в системную папку Font
    ' Установка шрифта вызовом API и регистрация шрифта в реестре
    '========================  Параметры ====================================
    ' {файл список}
    ' %L
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (09.10.2010 - 28.12.2010)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=======================================================================
    Option Explicit
    Dim FSO, WSH, ListFile, Path, Ext, i, TName, TPath
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
    i = 0

    Do While Not ListFile.AtEndOfStream
      Path = ListFile.ReadLine
      Ext = FSO.GetExtensionName(Path)
      TName = FSO.GetBaseName(Path) & "." & Ext
      TPath = WSH.SpecialFolders("Fonts") & "\" & TName
        If (FSO.FileExists(Path)) And (FSO.FileExists(TPath) = False) Then
          if UCase(Ext) = "TTF" Or UCase(Ext) = "OTF" Or UCase(Ext) = "TTC" Or UCase(Ext) = "FON" Then
            FSO.CopyFile Path, TPath
            WSH.Run "RunDll32.exe gdi32.dll,AddFontResourceA " & TName
            WSH.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\" &_
            FSO.GetBaseName(Path) & " (TrueType)" ,TName,"REG_SZ"
            i = i +1
          End if
        End If
    Loop

    MsgBox "Скопировано и зарегистрировано в систему " &_
    i & " шрифта(ов)", vbInformation ,"Установка шрифтов"

    ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:00

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:29 / #82
  4. Offline

    Andrey_A

    Пользователь

    Posts: 275

    ListFontBar.au3
    Создание Font.bar файла - панели Total Commander'a для быстрой установки шрифта файловых панелей
    Используется InstalFontInWincmd.vbs

    ; ListFontBar.au3
    ; ========================   Описание   =====================================
    ; Создание Font.bar файла - панели Total Commander'a для быстрой установки шрифта файловых панелей
    ; ====================   Как работает скрипт   ================================
    ; 1. Чтение шрифтов из реестра, очистка от мусора, дубликатов, сортировка
    ; 2. Создание .bar файлов по первым буквам шрифтов (в папке $FontPath)
    ; 3. Создание Font.bar файла ($FontBarFile)
    ; ======================   Как использовать   ================================
    ; 1. запустить скрипт
    ; 2. перетащить Font.bar на панель Total Commander'a
    ; 3. сделать кнопку в виде меню (нажать правой кнопкой -> изменить -> галочка в виде меню -> ok)
    ;
    ; Автор:             Аверин Андрей
    ; Версия:          1.4 (20.01.2011 - 08.03.2012)
    ; Mail:                 Averin-And@yandex.ru
    ; Site:                  http://tc-image.3dn.ru
    ; ========================================================================
    Dim $aSSS[1000] = [0]
    $aSSS[0] = 1
    $Text = ""
    $bText = ""
    $FontText = ""
    $FontSym = ""
    $sCount = ""
    $n = 0
    $FontPath = "%COMMANDER_PATH%\BAR\Font"; папка для создаваемых вспомогательных .bar файлов
    $FontBarFile = "%COMMANDER_PATH%\BAR\000_Font.bar"; основной .bar файл
    $AutoIt = "%COMMANDER_PATH%\Utilities\Scripting\AutoIt\AutoIt3.exe"; путь к AutoIt3.exe
    $Script = "%COMMANDER_PATH%\Scripts\CreateBar\ListFontBar.au3"; путь к этому скрипту
    $FontInst = "%COMMANDER_PATH%\Scripts\SysScript\InstalFontInWincmd.vbs"; путь к скрипту, который устанавливает шрифт в Total Commander
    $IconIcl = "%COMMANDER_PATH%\Wcmicons.dll"; путь к библиотеке с иконками
    $NIcon1 = 322; номер иконки для вспомогательных .bar файлов
    $NIcon2 = 1249; номер иконки для основного .bar файла
    $NIcon3 = 80  ; номер иконки обновления
    $FPath = _TCHExpandEnv($FontPath)
    DirCreate($FPath)
    FileDelete($FPath & "\*.bar")
    FileDelete($FPath & "\*.br2")

    ; адреса реестра из которых считываются шрифты
    $aSSS =_ReadRegg("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontMapper",$aSSS[0] , $aSSS)
    $aSSS =_ReadRegg("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts",$aSSS[0], $aSSS)
    __ArrayQuickSort1D($aSSS, 1, $aSSS[0])

    ; создание .bar файлов шрифтов в отдельной папке
    ; шрифты объединяютя в один .bar файл по первой букве
    $Text = "[Buttonbar]" & @CRLF & "Buttoncount=>>>>" & @CRLF
    For $kk = 1 to $aSSS[0] + 1
      $tFont = _FirstLetterUp($aSSS[$kk])   ; название шрифта
      $Sym = StringMid($tFont, 1, 1)              ; первая буква
      if $Sym <> $sCount Then
        if $kk <> 1 Then
          $BarFile = $FontPath & "\Font_" & $sCount & ".bar"
          $Text = StringReplace($Text, ">>>>", $n)
          FileWrite(FileOpen(_TCHExpandEnv($BarFile), 2+8+32), $Text)
          $FontText = $FontText & $BarFile & ";"   ; строка путей создаваемых . bar файлов
          $FontSym = $FontSym & $sCount & ";"   ; строка из первых букв шрифтов
          $n = 0
          $Text = "[Buttonbar]" & @CRLF & "Buttoncount=>>>>"
        EndIf
      EndIf
      $sCount = $Sym
      $n = $n + 1
      $Text = $Text  & @CRLF & _
                     "cmd" & $n & "=" & $FontInst & @CRLF & _
                     "param"& $n & "=" & Chr(34) & Chr(34) & $tFont & Chr(34) & Chr(34) & @CRLF & _
                     "menu"& $n & "=Установить шрифт " & Chr(34) & $tFont & Chr(34) & @CRLF & _
                     "button"& $n & "=" & $IconIcl & "," & $NIcon1
    Next

    ; запись созданных .bar файлов в основной для отображении на панели Total Commander'a
    $n = 4
    $Fs = StringSplit($FontSym, ";", 1); массив путей создаваемых . bar файлов
    $Ft = StringSplit($FontText, ";", 1) ; массив первых букв шрифтов
    $bText = "[Buttonbar]" & @CRLF & _
                     "Buttoncount=" & UBound($Ft) + 1 & @CRLF &  _
                     "cmd1=" & @CRLF &  _
                     "button1=" & @CRLF &  _
                     "cmd2=" & $AutoIt & Chr(32) & Chr(34) & $Script & Chr(34) & @CRLF &  _
                     "button2=" & $IconIcl & "," & $NIcon3 & @CRLF & _
                     "menu2=Обновить" & @CRLF & _
                     "cmd3=" & @CRLF &  _
                     "button3="
    For $ii = 1 To UBound($Ft) - 2
      $bText = $bText  & @CRLF & _
                     "cmd"& $n & "=" & $Ft[$ii] & @CRLF & _
                     "button"& $n & "=" & $IconIcl & "," & $NIcon2 & @CRLF & _
                     "menu"& $n & "=Шрифты " & Chr(34) & $Fs[$ii] & Chr(34) & @CRLF & _
                     "iconic"& $n & "=1"
      $n = $n + 1
    Next

    FileWrite(FileOpen(_TCHExpandEnv($FontBarFile), 2+8+32), $bText)

    ; функция считывает раздел из реестра и заносит имена в массив с определёнными условиями
    ; нулевая позиция массива является длинной
    Func _ReadRegg($Adres,$n,$aS)
      For $i = 1 to 1000
        $var = RegEnumVal($Adres, $i); Вернуть название значения(Ключ реестра, начиная с N)
        if @error <> 0 Then ExitLoop
        if $n = 1 Then
          $aS[1] = _DelFromLne($var)
          $n = $n + 1
        Endif
        if StringInStr($var, "&") = 0 Then
              $var = _Dudlicat($var,$aS)
          if StringLen($var) > 2 Then
            $aS[$n] = $var
            $n = $n + 1
          Endif
        Else
           $Rez = StringSplit($var, " & ", 1)
          For $s = 1 To UBound($Rez) - 1
            $var = $Rez[$s]
            $var = _Dudlicat($var,$aS)
              if StringLen($var) > 2 Then
                $aS[$n] = $var
                $n = $n + 1
              EndIf
          Next
        Endif
      Next
      $aS[0] = $n - 1
      Return $aS
    EndFunc

    ; функция сортирует массив по первым символам (в алфавитном порядке)
    Func _SortSym(ByRef $aStrings, $ff)
      For $mm = 0 to  $ff - 1
        if  StringLeft($aStrings[$mm],1) > StringLeft($aStrings[$mm+1],1) Then
          $Temp = $aStrings[$mm+1]
          $aStrings[$mm+1] = $aStrings[$mm]
          $aStrings[$mm] = $Temp
          $mm = 0
        Endif
      Next
      Return $aStrings
    EndFunc

    ; функция проверяет, есть ли строка уже в масиве, если да, то делает её пустой ""
    Func _Dudlicat($Line, $dubList)
      $Line = _DelNum($Line)         ; очистка от цифр
      $Line = _DelFromLne($Line) ; очистка от мусора
        For $pp = 1 To UBound($dubList) - 1
          if $dubList[$pp] = $Line Then
            $pp = UBound($dubList)
            $Line = ""
          Endif
        Next
      Return $Line
    EndFunc

    ; функция удаления ненужных фраз из строки
    ; фразы прописываются через; в $DelText = "(TrueType);Italic;Bold;,"
    Func _DelFromLne($Line)
        $DelText = "(TrueType);Italic;Bold;,;(All res);(VGA res);(VGA)"
        $Dell = StringSplit($DelText, ";", 1); разрезаем строку, создаём массив
          For $ii = 1 To UBound($Dell) - 1
            $Line = StringReplace($Line, $Dell[$ii] , "")
          Next
        $Line = StringStripWS($Line, 3); удалить пробелы в начале и вконце строки
      Return $Line
    EndFunc

    ; функция удаления цифр из строки
    Func _DelNum($Line)
        $DelText = "1;2;3;4;5;6;7;8;9;0"
        $Dell = StringSplit($DelText, ";", 1)
          For $ii = 1 To UBound($Dell) - 1
            $Line = StringReplace($Line, $Dell[$ii] , "")
          Next
        $Line = StringStripWS($Line, 3)
      Return $Line
    EndFunc

    ; функция преобразования строки "Первый Символ С Большой Буквы"
    Func _FirstLetterUp($Line)
      $sLine = ""
        For $ii = 1 To StringLen($Line)
          $Sym = StringMid($Line, $ii, 1)
          if $ii = 1 Then
            $Sym = StringUpper($Sym)
          Else
            if $Sym = " " Then
              $ii = $ii + 1
              $Sym = " " & StringUpper(StringMid($Line, $ii, 1))
            Else
              $Sym = StringLower($Sym)
            EndIf
          EndIf
          $sLine = $sLine & $Sym
        Next
      Return $sLine
    EndFunc

    ; функция разворачивания переменных окружения
    Func _TCHExpandEnv($sText)
      $aResult = StringRegExp($sText, "%(\w+)%", 3)
        If IsArray($aResult) Then
          For $i = 0 To UBound($aResult)-1
            $sText = StringReplace($sText, "%" & $aResult[$i] & "%", EnvGet($aResult[$i]))
          Next
        EndIf
      Return $sText
    EndFunc

    ; быстрая сортирока массива по в алфавитном порядке
    Func __ArrayQuickSort1D(ByRef $avArray, ByRef $iStart, ByRef $iEnd)
        If $iEnd <= $iStart Then Return
        Local $vTmp
    ; InsertionSort (faster for smaller segments)
        If ($iEnd - $iStart) < 15 Then
            Local $vCur
            For $i = $iStart + 1 To $iEnd
                $vTmp = $avArray[$i]

                If IsNumber($vTmp) Then
                    For $j = $i - 1 To $iStart Step -1
                        $vCur = $avArray[$j]
                    ; If $vTmp >= $vCur Then ExitLoop
                        If ($vTmp >= $vCur And IsNumber($vCur)) Or (Not IsNumber($vCur) And StringCompare($vTmp, $vCur) >= 0) Then ExitLoop
                        $avArray[$j + 1] = $vCur
                    Next
                Else
                    For $j = $i - 1 To $iStart Step -1
                        If (StringCompare($vTmp, $avArray[$j]) >= 0) Then ExitLoop
                        $avArray[$j + 1] = $avArray[$j]
                    Next
                EndIf

                $avArray[$j + 1] = $vTmp
            Next
            Return
        EndIf

    ; QuickSort
        Local $L = $iStart, $R = $iEnd, $vPivot = $avArray[Int(($iStart + $iEnd) / 2)], $fNum = IsNumber($vPivot)
        Do
            If $fNum Then
            ; While $avArray[$L] < $vPivot
                While ($avArray[$L] < $vPivot And IsNumber($avArray[$L])) Or (Not IsNumber($avArray[$L]) And StringCompare($avArray[$L], $vPivot) < 0)
                    $L += 1
                WEnd
            ; While $avArray[$R] > $vPivot
                While ($avArray[$R] > $vPivot And IsNumber($avArray[$R])) Or (Not IsNumber($avArray[$R]) And StringCompare($avArray[$R], $vPivot) > 0)
                    $R -= 1
                WEnd
            Else
                While (StringCompare($avArray[$L], $vPivot) < 0)
                    $L += 1
                WEnd
                While (StringCompare($avArray[$R], $vPivot) > 0)
                    $R -= 1
                WEnd
            EndIf

        ; Swap
            If $L <= $R Then
                $vTmp = $avArray[$L]
                $avArray[$L] = $avArray[$R]
                $avArray[$R] = $vTmp
                $L += 1
                $R -= 1
            EndIf
        Until $L > $R

        __ArrayQuickSort1D($avArray, $iStart, $R)
        __ArrayQuickSort1D($avArray, $L, $iEnd)
    EndFunc  ;==>__ArrayQuickSort1D
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:00

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:32 / #83
  5. Offline

    Andrey_A

    Пользователь

    Posts: 275

    InstallFont.vbs
    Копирует и устанавливает выделенные шрифты в системную папку Font

    ' InstallFont.vbs
    '========================   Описание   ====================================
    ' Копирует и устанавливает выделенные шрифты в системную папку Font
    ' Установка шрифта вызовом API и регистрация шрифта в реестре
    '========================  Параметры ====================================
    ' {файл список}
    ' %L
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (09.10.2010 - 28.12.2010)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=======================================================================
    Option Explicit
    Dim FSO, WSH, ListFile, Path, Ext, i, TName, TPath
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
    i = 0

    Do While Not ListFile.AtEndOfStream
      Path = ListFile.ReadLine
      Ext = FSO.GetExtensionName(Path)
      TName = FSO.GetBaseName(Path) & "." & Ext
      TPath = WSH.SpecialFolders("Fonts") & "\" & TName
        If (FSO.FileExists(Path)) And (FSO.FileExists(TPath) = False) Then
          if UCase(Ext) = "TTF" Or UCase(Ext) = "OTF" Or UCase(Ext) = "TTC" Or UCase(Ext) = "FON" Then
            FSO.CopyFile Path, TPath
            WSH.Run "RunDll32.exe gdi32.dll,AddFontResourceA " & TName
            WSH.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts\" &_
            FSO.GetBaseName(Path) & " (TrueType)" ,TName,"REG_SZ"
            i = i +1
          End if
        End If
    Loop

    MsgBox "Скопировано и зарегистрировано в систему " &_
    i & " шрифта(ов)", vbInformation ,"Установка шрифтов"

    ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:01

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:34 / #84
  6. Offline

    Andrey_A

    Пользователь

    Posts: 275

    RunStopRestart.vbs
    Запуск\Остановка\Перезапуск программы

    ' RunStopRestart.vbs
    '========================   Описание   =====================================
    ' Запуск\Остановка\Перезапуск программы
    '========================  Параметры =====================================
    ' 1-й параметр: полный\путь\к\программе.exe
    ' 2-й параметр:
    '    0 - Перезапуск программы, если она запущена
    '    1 - Завершает процесс программы
    '    2 - Запускает второй экземпляр, третий, четвёртый....
    '    3 - Запускает или завершает
    '    4 - Запускает, если процесс не запущен и не запускает, если запущен
    '========================   Примеры   =====================================
    ' "%%WINDIR%%\SYSTEM32\notepad.exe" 3 - вкл\выкл блокнота
    ' "%%COMMANDER_PATH%%\TOTALCMD.EXE" - перезапуск ТС, если он запущен
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (09.11.2011 - 14.01.2012)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=======================================================================
    Count = 0 : Title = "Запуск\Остановка\Перезапуск программы"
    With WScript
      Cnt = .Arguments.Count
      If Cnt > 0 Then
        Program = .Arguments(0)
        If Cnt > 1 Then Count = .Arguments(1)
      Else
        MsgBox "Не хватает параметров!" & vbNewLine &_
        "Должен быть минимум ОДИН параметра" & vbNewLine &_
        "Полный путь к программе", vbOKOnly & vbInformation, Title
        .Quit
      End If
    End With

    With CreateObject("Scripting.FileSystemObject")
      If Not .FileExists(CreateObject("WScript.Shell").ExpandEnvironmentStrings(Program))Then
        MsgBox "Указанная программа не обнаружена", vbOKOnly & vbInformation, Title
        WScript.Quit
      End If
      Name = .GetFileName(Program)
    End With

    If Count <> 2 Then
      For Each Proc In GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_Process")
          If LCase(Proc.Name) = LCase(Name) Then
            If Count <> 4 Then Proc.Terminate
            cEnd = 1 : Exit For
          End If
      Next
    End If

    Select Case Count
      Case 0 If cEnd = 1 Then ProgramRun
      Case 2 ProgramRun
      Case 3 If cEnd = 0 Then ProgramRun
      Case 4 If cEnd = 0 Then ProgramRun
    End Select

    Sub ProgramRun : CreateObject("WScript.Shell").Exec(Program) : WScript.Quit : End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:01

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:35 / #85
  7. Offline

    Andrey_A

    Пользователь

    Posts: 275

    Usb.vbs
    Вызывает окно безопасного отключения USB-дисков (требуется deveject.exe)
    Скачать deveject.exe

    ' Usb.vbs
    '========================================================================
    ' Вызывает окно безопасного отключения USB-дисков (требуется deveject.exe)

    ' Автор:             SkOle & Аверин Андрей
    ' Версия:          1.1 (08.11.2011)
    ' Site:                  http://tc-image.3dn.ru
    '====================   Изменяемые пути   ==================================
    Exe = "%COMMANDER_PATH%\Utilities\USB\deveject\deveject.exe"
    '========================================================================
    With CreateObject("WScript.Shell")
      Exe = .ExpandEnvironmentStrings(Exe)
      If Not CreateObject("Scripting.FileSystemObject").FileExists(Exe) Then
        MsgBox "Не правильно указан путь до deveject.exe" & vbNewLine &_
        "Дом.страница http://www.withopf.com/tools/deveject/", vbOKOnly & vbInformation,_
        "Безопасное отключение USB-дисков"
        WScript.Quit
      End If
      For Each objDisk In GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2").ExecQuery("SELECT * FROM Win32_DiskDrive")
        If objDisk.InterfaceType = "USB" Then
           If MsgBox("Отключить " & objDisk.Caption & " ?", vbYesNo + vbQuestion, "Безопасное извлечение устройств") = vbYes Then .Run Chr(34) & Exe & Chr(34) & " -EjectId:" & objDisk.PNPDeviceID
        End If
      Next
    End With
    WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:02

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:38 / #86
  8. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CopyXlsInText.au3
    Копирование из файлов XLS, XLSX строк, столбцов в текстовый файл

    ; CopyXlsInText.au3
    ; ================   Описание   ===================================
    ; Копирование из файлов XLS, XLSX строк, столбцов в текстовый файл
    ; ================  Параметры ===================================
    ; В командной строке  должно быть прописано 7 - 11 параметров:
    ; - - - - - - - - - - - - - - - - - Обязательные - - - - - - - - - - - - - - - - - - - -
    ; 1) Номер листа с какого считывать информацию
    ; 2) С какой строки начать считывание
    ; 3) С какого столбца начать считывание
    ; 4) К-во считываемых рядов (строк) (0 - все)
    ; 5) К-во считываемых колонок (столбцов)
    ; 6) Путь\к\файлу.xls
    ; 7) Путь\к\сохранению\файла.txt
    ; (можно вводить пути с переменными окружения)
    ; - - - - - - - - - - - - - - - Дополнительные  - - - - - - - - - - - - - - - - - - - -
    ; 8) 1 = Удалять пустые строки   0 = оставить как есть
    ; 9) строка-вставка между колонками
    ; 10)  строка-вставка в начале строки
    ; 11)  строка-вставка в конце строки
    ; ================    Примеры    ===================================
    ; 1 2 0 4 "%%COMMANDER_PATH%%\Files\Lists\CreateMenu\WcmMenuImage.xlsx" "%%COMMANDER_PATH%%\Text.ini"
    ; 1 2 0 4 "%%COMMANDER_PATH%%\Files\Lists\CreateMenu\WcmMenuImage.xlsx" "%%COMMANDER_PATH%%\Text.ini" 1 "___" "| " " |"
    ; 1 1 1 0 0 %P%N "%T%O.txt" 1 "   "    Копирование первого листа из xls под курсором в текстовый файл в соседнюю панель
    ;
    ; Автор:             Аверин Андрей
    ; Версия:          1.0 (12.10.2010)
    ; Mail:                 Averin-And@yandex.ru
    ; Site:                  http://tc-image.3dn.ru
    ; ===============================================================
    #include <Excel.au3>

    If $CmdLine[0] < 7  Then
      MsgBox(16 + 262144, "Запись из табличного файла строк и столбцов в файл", _
      "Не хватает параметров!" & @CRLF & "Должно быть минимум СЕМЬ, а у вас" & _
      $CmdLine[0] & @CRLF & "Пропишите и повторите попытку!" & @CRLF & _
      "Подробную информацию читайте в коментариях скрипта", 10)
      Exit
    Endif

    $List = Number($CmdLine[1])
    $StartRow = Number($CmdLine[2])
    $StartCol = Number($CmdLine[3])
    $RowCnt = Number($CmdLine[4])
    $ColCnt = Number($CmdLine[5])
    $XlsFile = _TCHExpandEnv($CmdLine[6])
    $TxtFile = _TCHExpandEnv($CmdLine[7])

    $Text = ""
    $Insert = ""
    $Control = ""
    $Contr = 0
    $InsertRight = ""
    $InsertLeft = ""
    if $CmdLine[0] > 7 Then $Contr = $CmdLine[8]
    if $CmdLine[0] > 8 Then $Insert = $CmdLine[9]
    if $CmdLine[0] > 9 Then $InsertRight = $CmdLine[10]
    if $CmdLine[0] > 10 Then $InsertLeft = $CmdLine[11]

    ; Открываем xls , считываем нужные строки, колонки и закрываем
    $oInFile = _ExcelBookOpen($XlsFile, 0, True)
    ; номер листа
    $oInFile.Sheets($List).Select()

    $aData = _ExcelReadSheetToArray($oInFile, $StartRow, $StartCol, $RowCnt , $ColCnt)
    _ExcelBookClose($oInFile, 0)

    if $RowCnt = 0 Then $RowCnt = UBound($aData,1) - 1;размерность массива (к-во строк)
    if $ColCnt = 0 Then $ColCnt = UBound($aData,2) - 1;размерность массива (к-во колонок)

    ; Открываем выходной файл для записи - с очисткой
    $hFile = FileOpen($TxtFile, 2)

    ; Записываем  данные
    For $i=1 To $RowCnt
        For $j=1 To $ColCnt
           if $aData[$i][$j] = "" Then $aData[$i][$j] = ""
           $Text = $Text & StringFormat("%s", $aData[$i][$j]) & $Insert
           $Control = $Control & $Insert
        Next
       ; проверка на пустые строки
        if $Contr = 1 And StringCompare($Control, $Text,2) = 0 Then
        Else
           FileWriteLine($hFile, $InsertLeft & $Text & $InsertRight)
        Endif
        $Text = ""
        $Control = ""
    Next

    ; функция разворачивания переменных окружения
    Func _TCHExpandEnv($sText)
        $aResult = StringRegExp($sText, "%(\w+)%", 3)
        If IsArray($aResult) Then
            For $i = 0 To UBound($aResult)-1
                $sText = StringReplace($sText, "%" & $aResult[$i] & "%", EnvGet($aResult[$i]))
            Next
        EndIf
        Return $sText
    EndFunc
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:02

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:48 / #87
  9. Offline

    Andrey_A

    Пользователь

    Posts: 275

    CountPhraseInText.vbs
    Подсчёт к-ва раз встречающейся фразы в файле и вывод отчёта

    ' CountPhraseInText.vbs
    '========================   Описание   =====================================
    ' Подсчёт количества раз встречающейся фразы в файле и вывод отчёта
    '=======================   Параметры  =====================================
    ' 1-й параметр: Файл, в котором небходимо подсчитать фразу
    ' 2-й параметр: Фраза (если параметр отсутствует, она вводится в диалоге)
    '========================   Примеры   =====================================
    ' %P%N                   - подсчёт фразы в файле под курсором, фраза вводится в диалоге
    ' %P%N "привет" - подсчёт фразы "привет" в файле под курсором
    ' "%%COMMANDER_PATH%%\Language\Wcmd_Rus.mnu" " em_"

    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (2010 - 06.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=====================================================================
    With WScript
      Cnt = .Arguments.Count
      If Cnt = 0 Then
        MsgBox "Не хватает параметров!"  & vbNewLine &_
        "Нужен минимум один параметр %P%N",_
        vbOKOnly & vbInformation, "Подсчёт фраз в тексте" : .Quit
      End If
      InFile = CreateObject("WScript.Shell").ExpandEnvironmentStrings(.Arguments(0))
      If Cnt > 1 Then
        fStr = .Arguments(1)
      Else
        Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
        fStr = InputBox("Введите тест для поиска", "Подсчёт к-ва текста", Clip)
      End If
    End With

    With CreateObject("Scripting.FileSystemObject")
      If Not .FileExists(InFile) Then WScript.Quit
      On Error Resume Next
      Set ts = .OpenTextFile(InFile, 1)
    End With

    Do Until ts.AtEndOfStream
      Stroka = ts.ReadLine
       For i = 1 To (Len(Stroka) - Len(fStr)+1)
         If Mid(Stroka, i, Len(fStr)) = fStr Then s = s + 1
       Next
    Loop
    MsgBox "Фраза" & Chr (34) & fStr & Chr (34) & vbNewLine &_
                    "повторяется в тексте " & Cstr(s) & " раз(а)",, "Результат:"
    ts.Close : Set ts = Nothing : WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:03

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:49 / #88
  10. Offline

    Andrey_A

    Пользователь

    Posts: 275

    InsertText.au3
    Добавление текста до/после/над/после строк в выделенных текстовых файлах

    ; InsertText.au3
    ; ======================   Описание   =====================================
    ; Добавление текста до/после/над/после строк в выделенных текстовых файлах
    ;; Параметры: %L

    ; Автор:             Loopback
    ; Версия:          1.0 (14.10.2010)
    ; ======================================================================
    If $CmdLine[0] < 1 Then
        MsgBox (0, "", "Недостаточно параметров, должно быть 1.")
        Exit
    EndIf

    Global $aList  = _TCHLoadFileList($CmdLine[1])
    Global $gBackups = False, $gCaseSence = 0
    Global Const $GUI_CHECKED = 1
    Global $gRemoveEmpty = False
    Global $gIniFile = StringLeft(@ScriptFullPath, StringInStr(@ScriptFullPath, ".", 0, -1)) & "ini"

    $hGUI = GUICreate("Вставка текста", 549, 570, -1, -1)
    $edTextLeft = GUICtrlCreateEdit("", 8, 96, 529, 73)
    $btnOK = GUICtrlCreateButton("OK", 384, 528, 75, 25)
    $btnCancel = GUICtrlCreateButton("Отмена", 464, 528, 75, 25)
    GUICtrlCreateLabel("начинающейся на", 198, 70, 94, 17, 0x2)
    $cbCaseSence = GUICtrlCreateCheckbox("Учитывать регистр", 8, 520, 137, 17)
    $edMask = GUICtrlCreateInput("*.*", 8, 24, 265, 21)
    GUICtrlCreateLabel("Маска файлов", 8, 6, 78, 17)
    $edTextRight = GUICtrlCreateEdit("", 8, 208, 529, 73)
    $edTextBefore = GUICtrlCreateEdit("", 8, 320, 529, 73)
    $edTextAfter = GUICtrlCreateEdit("", 8, 432, 529, 73)
    GUICtrlCreateLabel("заканчивающейся на", 176, 182, 113, 17, 0x2)
    GUICtrlCreateLabel("начинающейся на", 196, 294, 95, 17, 0x2)
    GUICtrlCreateLabel("заканчивающейся на", 176, 406, 113, 17, 0x2)
    $ibFilterLeft = GUICtrlCreateInput("", 296, 66, 241, 21)
    $ibFilterRight = GUICtrlCreateInput("", 296, 178, 241, 21)
    $ibFilterBefore = GUICtrlCreateInput("", 296, 290, 241, 21)
    $ibFilterAfter = GUICtrlCreateInput("", 296, 402, 241, 21)
    GUICtrlCreateLabel("", 8, 56, 528, 2, 0x10)
    GUIStartGroup()
    $Radio1 = GUICtrlCreateRadio("Добавить к строке слева", 8, 69, 153, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetTip(-1, "Приоритет над п.3")
    $Radio3 = GUICtrlCreateRadio("Добавить сверху строки", 8, 293, 153, 17)
    GUICtrlSetTip(-1, "Приоритет над п.1")
    GUIStartGroup()
    $Radio2 = GUICtrlCreateRadio("Добавить к строке справа", 8, 181, 161, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlSetTip(-1, "Приоритет над п.4")
    $Radio4 = GUICtrlCreateRadio("Добавить снизу строки", 8, 405, 153, 17)
    GUICtrlSetTip(-1, "Приоритет над п.2")
    $cbBackups = GUICtrlCreateCheckbox("Создавать резервные копии", 160, 520, 193, 17)
    $cbRemoveEmpty = GUICtrlCreateCheckbox("Удалять пустые строки", 8, 544, 150, 17)
    $cbCloseDone = GUICtrlCreateCheckbox("Закрывать по завершению", 160, 544, 160, 17)
    Global $AccelTable[1][2] = [["^{ENTER}", $btnOK]]
    GUISetAccelerators($AccelTable)

    GUISetState(@SW_SHOW)

    GUICtrlSetState($cbCaseSence,   IniRead($gIniFile, "Settings", "CaseSenseSearch", 4))
    GUICtrlSetState($cbBackups,     IniRead($gIniFile, "Settings", "MakeBackups", 4))
    GUICtrlSetState($cbRemoveEmpty, IniRead($gIniFile, "Settings", "RemoveEmptyLines", 4))
    GUICtrlSetState($cbCloseDone,   IniRead($gIniFile, "Settings", "CloseWhenDone", 1))

    While 1
       $nMsg = GUIGetMsg()
       Switch $nMsg
          Case -3, $btnCancel
            Exit
          Case $btnOK
            $gMask = _MaskToRegexp(GUICtrlRead($edMask))
            $gBackups = BitAND(GUICtrlRead($cbBackups), $GUI_CHECKED)
            $gRemoveEmpty = BitAND(GUICtrlRead($cbRemoveEmpty), $GUI_CHECKED)
            If BitAND(GUICtrlRead($cbCaseSence), $GUI_CHECKED) Then $gCaseSence = 1
            WinSetState($hGUI, "", @SW_DISABLE)

            IniWrite($gIniFile, "Settings", "CaseSenseSearch",  GUICtrlRead($cbCaseSence))
            IniWrite($gIniFile, "Settings", "MakeBackups",      GUICtrlRead($cbBackups))
            IniWrite($gIniFile, "Settings", "RemoveEmptyLines", GUICtrlRead($cbRemoveEmpty))
            IniWrite($gIniFile, "Settings", "CloseWhenDone",    GUICtrlRead($cbCloseDone))

            For $i = 1 To $aList[0]
                If StringRight($aList[$i], 1) = "\" Then
                    _DoFolder($aList[$i])
                Else
                    _DoFile($aList[$i])
                EndIf
            Next
            MsgBox (0, "", "Завершено.", 0, $hGUI)
            If BitAND(GUICtrlRead($cbCloseDone), $GUI_CHECKED) Then Exit
            WinSetState($hGUI, "", @SW_ENABLE)
       EndSwitch
    WEnd

    Func _DoFolder($sFolder)
        If $sFolder = "" Then Return
        Local $sDirs = ""
        Local $hSearch = FileFindFirstFile($sFolder & "*.*")
        If @error Then Return
        While 1
            $sFile = FileFindNextFile($hSearch)
            If @error Then ExitLoop
            If @extended Then
                $sDirs &= $sFolder & $sFile & "\" & @LF
                ContinueLoop
            EndIf
            _DoFile($sFolder & $sFile)
        Wend
        FileClose($hSearch)
       ; Обработку каталогов приходится делать отдельно,
       ; чтобы не оставлять открытый поисковый хэндл,
       ; их максимально может быть 64
        $aDirs = StringSplit($sDirs, @LF)
        For $i = 1 To $aDirs[0]
            _DoFolder($aDirs[$i])
        Next
    EndFunc

    Func _ProcessLines(ByRef $aSrcFile, ByRef $aTrgFile, $sText, $sFilter, $nMode)
        If $sText = "" Then Return
        For $i = 1 To $aSrcFile[0]
            Switch $nMode
                Case 0, 2
                    If ($sFilter <> "") Then
                        $sLeft = StringLeft($aSrcFile[$i], StringLen($sFilter))
                        If $gCaseSence Then
                            If Not ($sLeft == $sFilter) Then ContinueLoop
                        Else
                            If $sLeft <> $sFilter Then ContinueLoop
                        EndIf
                    EndIf
                    If $nMode = 2 Then $aTrgFile[$i] = @CRLF & $aTrgFile[$i]
                    $aTrgFile[$i] = $sText & $aTrgFile[$i]
                Case 1, 3
                    If ($sFilter <> "") Then
                        $sRight = StringRight($aSrcFile[$i], StringLen($sFilter))
                        If $gCaseSence Then
                            If Not ($sRight == $sFilter) Then ContinueLoop
                        Else
                            If $sRight <> $sFilter Then ContinueLoop
                        EndIf
                    EndIf
                    If $nMode = 3 Then $aTrgFile[$i] = $aTrgFile[$i] & @CRLF
                    $aTrgFile[$i] = $aTrgFile[$i] & $sText
            EndSwitch
        Next
    EndFunc

    Func _DoFile($sFile)
        If StringRegExp(StringLower($sFile), $gMask) = 0 Then Return
        Local $aSrcFile = _TCHLoadFileList($sFile)
        If $gRemoveEmpty And ($aSrcFile[0] > 0) Then
            Local $aTrgFile[$aSrcFile[0]+1] = [0]
            For $i = 1 To $aSrcFile[0]
                If $aSrcFile[$i] <> "" Then
                    $aTrgFile[0] += 1
                    $aTrgFile[$aTrgFile[0]] = $aSrcFile[$i]
                EndIf
            Next
            ReDim $aTrgFile[$aTrgFile[0] + 1]
            $aSrcFile = $aTrgFile
        Else
            Local $aTrgFile = $aSrcFile
        EndIf

        If BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) Then
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextLeft), GUICtrlRead($ibFilterLeft), 0)
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextbefore), GUICtrlRead($ibFilterBefore), 2)
        Else
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextbefore), GUICtrlRead($ibFilterBefore), 2)
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextLeft), GUICtrlRead($ibFilterLeft), 0)
        EndIf

        If BitAND(GUICtrlRead($Radio3), $GUI_CHECKED) Then
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextRight), GUICtrlRead($ibFilterRight), 1)
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextAfter), GUICtrlRead($ibFilterAfter), 3)
        Else
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextAfter), GUICtrlRead($ibFilterAfter), 3)
            _ProcessLines($aSrcFile, $aTrgFile, GUICtrlRead($edTextRight), GUICtrlRead($ibFilterRight), 1)
        EndIf

        If $gBackups Then FileCopy($sFile, $sFile & ".bak", 1); бэкап
        Local $hFile = FileOpen($sFile, 2)
        For $i = 1 To $aTrgFile[0]
            FileWriteLine($hFile, $aTrgFile[$i])
        Next
        FileClose($hFile)
    EndFunc

    Func _MaskToRegexp($sMask)
        $sMask = StringRegExpReplace($sMask, "(\\|\.|\+|\^|\(|\)|\[|\]|\{|\}|\$)", "\\\1")
        $sMask = StringReplace($sMask, "?", ".")
        $sMask = StringReplace($sMask, "*", ".+?")
        Return StringLower("(?i)" & $sMask & "$")
    EndFunc

    ; fast list load function
    Func _TCHLoadFileList($sFileName, $nIncBlock = 1000)
        Local $asList[$nIncBlock + 1] = [0]
        Local $hfList = FileOpen($sFileName, 0)
        Local $nCounter = 0
        While 1
            For $i = 1 To $nIncBlock
                $asList[$nCounter + $i] = FileReadLine($hfList)
                If @error Then
                    ReDim $asList[UBound($asList) + $i - $nIncBlock - 1]
                    ExitLoop(2)
                EndIf
            Next
            $nCounter += $nIncBlock
            ReDim $asList[UBound($asList)+$nIncBlock]
        Wend
        FileClose($hfList)
        $asList[0] = UBound($asList)-1
        Return $asList
    EndFunc
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:03

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:52 / #89
  11. Offline

    Andrey_A

    Пользователь

    Posts: 275

    ReplaceInFiles.vbs
    Поиск и замена текста в выделенных текстовых файлах

    ' ReplaceInFiles.vbs
    '================   Описание   ======================
    ' Поиск и замена текста в выделенных текстовых файлах
    '===============   Параметры   ======================
    ' 1-й параметр: список тестовых файлов (обязательный)
    ' 2-й параметр: что найти
    ' 3-й параметр: чем заменить
    ' 2 и 3 параметры можно ввести в диалоговых окнах
    '================   Примеры   =======================
    ' %L "найти" "заменить"
    ' %L "найти"
    ' %L

    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (2009 - 28.04.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '==================================================
    Titles = "Поиск и замена"
    With WScript
      Cnt = .Arguments.Count
      If Cnt > 0 Then
        tFile = .Arguments(0)
        If Cnt > 1 Then
          Find = .Arguments(1)
          If Cnt > 2 Then Replac = .Arguments(2)
        End If
      Else
        MsgBox "Не хватает параметров!!!", vbOKOnly & vbInformation, Titles
        WScript.Quit
      End If
    End With

    Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    If Len(Find) = 0 Then Find = InputBox("Введите искомую строку", Titles, Clip)
    If Len(Find) = 0 Then WScript.Quit
    Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    Replac = InputBox("Введите строку для замены", Titles, Clip)

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set ListFile = FSO.OpenTextFile(tFile, 1)

    Do While Not ListFile.AtEndOfStream
       Call ReplThisFile(ListFile.ReadLine)
    Loop

    'MsgBox "Замена завершена!", vbInformation , Titles
    ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : WScript.Quit

    Sub ReplThisFile(FilePath)
      On Error Resume Next
      Text = FSO.OpenTextFile(FilePath, 1, False, -2).ReadAll
      Text = Replace(CStr(Text), Find, Replac, 1, -1, 1)
      FSO.CopyFile FilePath, FilePath & ".bak"
      FSO.OpenTextFile(FilePath, 2, False, -2).Write Text
    End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 21:04

    Читайте: Справочные материалы по работе c TC + Онлайн справка TC

    23 ноября 2011 - 20:57 / #90

Статистика форума, пользователей онлайн: 0 (за последние 30 минут)

---
Создано тем
107
Всего сообщений
4048
Пользователей
99000
Новый участник
termojader