Скрипты для 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

    LinkFromAssociationsTC.vbs
    Создание ярлыков выделенных файлов, связанных с Программой, ассоциированной в Total Commander
    Используется FunctionsINIRWS.vbs - файл можете скачать в шапке темы

    ' LinkFromAssociationsTC.vbs
    '========================   Описание   =====================================
    ' Создание ярлыков выделенных файлов, связанных с Программой, ассоциированной в Total Commander
    '=======================   Параметры  =====================================
    ' 1-й параметр: файл список
    ' 2-й параметр: файл с секцией ассоциаций
    ' 3-й параметр: путь сохранения ярлыка
    '=======================   Дополнение   ====================================
    ' Можно составить СВОЙ ФАЙЛ АССОЦИАЦИЙ ListAssFiles.txt, вне файла Wincmd.ini
    ' где синтаксис будет таким же как и в секции [Associations]
    ' Filter1=;*.TXT;*.inc;
    ' Filter1_open=""%COMMANDER_PATH%\AkelPad.exe" "%1""
    ' Filter2=;*.JPG;*.bmp;
    ' Filter2_open=""%COMMANDER_PATH%\Plugins\wlx\Imagine\Imagine.exe" "%1""
    '=======================   Параметры  =====================================
    '  %L "%%COMMANDER_PATH%%\WinAssociations.ini" "%t"
    '  %L "%%COMMANDER_PATH%%\Wincmd.ini" "%p"
    '  %L "%%COMMANDER_PATH%%\UserAssociations_1.txt" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\"
    ' "%%COMMANDER_PATH%%\ListAssFiles.txt" "%%COMMANDER_PATH%%\Associations_2.txt" %%USERPROFILE%%\Desktop\"
    '
    ' Автор:             Аверин Андрей
    ' Версия:          2.0 (2010 - 14.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '====================   Изменяемые пути   ===================================
    INI = "%COMMANDER_PATH%\Scripts\Include\FunctionsINIRWS.vbs"
    '========================================================================
    Dim FSO, WSH
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Execute FSO.OpenTextFile(GetPath(INI)).ReadAll

    Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
    TPath = GetPath(WScript.Arguments(2))

    Do While Not ListFile.AtEndOfStream
      SelFile = ListFile.ReadLine
      Name = FSO.GetBaseName(SelFile) : Ext = FSO.GetExtensionName(SelFile)
      ExtAss = UCase(";*." & Ext & ";")' Готовим строку для поиска в ассоциациях

      TPathN = TPath & "\" & Name & "." & Ext & ".lnk" ' Параметры ярлыка по умолчанию
      Icon = TRG & ",0"

      If FSO.FolderExists(SelFile) Then
        Icon = ",0" : TPathN = TPath & "\" & Name & "." & "lnk"
      End if

      AsText = ReadINISection(WScript.Arguments(1), "Associations")
      AsText = LCase(RegExpReplace(AsText, "( [|])(.*)(" & vbNewLine & ")", "$3")) ' удаление игнорируемых расширений
      ListAss =  Split(AsText, vbNewLine)

      For i = 0 To Ubound(ListAss)
        If Len(ListAss(i)) > 0 Then
          if InStr(UCase(ListAss(i)), ExtAss) > 1 Then
            if InStr(UCase(ListAss(i+1)),"OPEN") > 1 Then
              LA = ListAss(i+1)
              TRG = Mid(LA, InStr(1, LA, "=") + 1)
              If Mid(TRG, 1, 1) = Chr(34) Then TRG = Mid(TRG, 2)
              If Mid(TRG, 1, 1) = Chr(34) Then TRG = Mid(TRG, 2)
              TRG =Mid(TRG, 1, InStr(TRG, Chr(34)) - 1)
              TPathN = TPath & "\" & Name & "." & Ext & ".lnk"
              If InStr(1,UCase(ListAss(i + 2)),"ICON") > 1 Then
                   LA = ListAss(i+2)
                Icon = Mid(LA, InStr(1, LA, "=") + 1 , Len(LA) - InStr(1, LA, "="))
                Icon = GetPath(Icon)
              End If
            End if
            Exit For
          End if
        End If
      Next
      If Len(TRG) > 0 Then
        TRG = GetPath(TRG)
        With WSH.CreateShortcut(TPathN)
          .Arguments = Chr(34) & SelFile & Chr(34)
          .Description = SelFile
          .IconLocation = icon
          .TargetPath = TRG
          .WindowStyle = 1
          .WorkingDirectory = FSO.GetParentFolderName(TRG)
          .Save
        End With
      End If
    Loop

    ListFile.Close : Set ListFile = Nothing : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit

    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function

    Function RegExpReplace(ppText, pFindStr, pNewStr)
      With New RegExp
        .Pattern = pFindStr : .IgnoreCase = True : .Global = True : RegExpReplace = .Replace(ppText, pNewStr)
      End With
    End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:27

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

    23 ноября 2011 - 18:14 / #51
  3. Offline

    Andrey_A

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

    Posts: 275

    MarkerCondition.vbs
    Выделение элементов с заданными интервалами и условием
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' MarkerCondition.vbs
    '========================   Описание   ====================================
    ' Выделение элементов с заданными интервалами и условием
    ' Выделяет так же в окне после поиска и при cm_DirBranch
    '========================  Параметры ====================================
    ' 1-й параметр: %L
    '    0     - выделяется всё в текущей панели
    '    >     - выделяется от курсора вниз
    '    <     - выделяется от курсора вверх
    '    %L -  выделяется только выделенное
    ' 2-й параметр: К-во подряд выделяемых элементов
    ' 3-й параметр: К-во пропущенных элементов после выделения
    ' 4-й параметр: Условие
    '    без параметра - всё (и файлы и папки)
    '    1 - только файлы
    '    2 - только папки
    '========================    Примеры    ====================================
    ' 0 1 1 - выделяется всё в текущей панели зеброй
    ' > 2 2 - выделяется всё от курсора вниз крупной зеброй
    ' < 3 4 - выделяется всё от курсора вверх необычной зеброй
    ' %L 1 5 - выделяется всё что выделено редкой зеброй
    ' 0 1 1 1 - только файлы
    ' 0 3 3 2 - только папки

    ' Автор:             Аверин Андрей
    ' Версия:          1.0 (20.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================  Изменяемые пути  ===============================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    MzList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerList.txt" ' любой файл для записи выделения
    '========================================================================
    Count = WScript.Arguments.Count
    If Count < 3 Then
      MsgBox "Не хватает параметров!" & vbNewLine &_
      "Должен быть минимум ТРИ параметра:" & vbNewLine &_
      "пример1: %L 2 3" & vbNewLine &_
      "пример2: 0 1 3" , vbOKOnly &_
      vbInformation, "Сохранение выделенного в файл"
      Wscript.Quit
    End If

    Dim FSO, WSH, TextMarker
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")
    If Count > 3 Then Condition = WScript.Arguments(3)
    Cnt = WScript.Arguments(0)
    Select Case Cnt
      Case "0"
       Select Case Condition
          Case 1 RunTCMC("CM3302")
          Case 2 RunTCMC("CM3303")
          Case Else RunTCMC("CM523")
        End Select
        MarkerInText
      Case ">" WSH.SendKeys "+{END}" : ConditionMarker
      Case "<" WSH.SendKeys "+{HOME}" : ConditionMarker
      Case Else On Error Resume Next : TextMarker = FSO.OpenTextFile(Cnt, 1).ReadAll
    End Select

    RunTCMC("CM2029")
    gPath = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    If Len(gPath) > 0 Then
      gPath = gPath & "\" : TextMarker = Replace(TextMarker, gPath , "", 1, -1, 1)
    End If

    If Count > 2 Then
        N = CInt(WScript.Arguments(1)) : M = CInt(WScript.Arguments(2))
        If N < 1 Or M < 1 Then WScript.Quit
        DataM = Split(TextMarker, vbNewLine) : TextMarker = ""
        If UBound(DataM) > N + 1 Then
          N = N - 1
          For i = 0 To UBound(DataM) Step N + M + 1
            On Error Resume Next
            For j = i To i + N
                 TextMarker = TextMarker & DataM(j) & vbNewLine
            Next
                If i > UBound(DataM) Then Exit For
          Next
        End if
    End if

    MzList = GetPath(MzList) : Program = GetPath(Program)
    FSO.CreateTextFile(MzList, True).Write(TextMarker)
    WScript.Sleep 100
    WSH.Run Chr(34) & Program & Chr(34) & " clipboard readfile " & Chr(34) & MzList & Chr(34), 2, True
    WScript.Sleep 200
    RunTCMC("CM2033")

    Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub RunTCMC(Param) : WSH.Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34)) : End Sub

    Sub ConditionMarker
      Select Case Condition
        Case 1 WScript.Sleep 300 : RunTCMC("CM3305")
        Case 2 WScript.Sleep 300 : RunTCMC("CM3304")
      End Select
      MarkerInText
    End Sub

    Sub MarkerInText
      WScript.Sleep 300 : RunTCMC("CM2018") : WScript.Sleep 1000
      TextMarker = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
      WScript.Sleep 200
    End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:28

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

    23 ноября 2011 - 18:28 / #52
  4. Offline

    Andrey_A

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

    Posts: 275

    MarkerN.vbs
    Выделить нужное количество папок и файлов в активной панели
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' MarkerN.vbs
    '========================   Описание   ==========================
    ' Выделить нужное количество папок и файлов в активной панели
    ' Выделяет так же в окне после поиска и при cm_DirBranch
    '========================  Параметры ==========================
    ' 1-й параметр: Условия выделения. Может принимать значения:
    '    1 - Выделение СВЕРХУ вниз
    '    2 - Выделение СНИЗУ вверх
    '    3 - Выделение от курсора ВНИЗ
    '    4 - Выделение от курсора ВВЕРХ
    ' 2-й параметр: КОЛИЧЕСТВО выделяемых файлов
    '========================   Примеры   ==========================
    ' без параметров - условия вводятся в диалоге
    ' 1 10
    ' 2 50
    ' 3 100
    ' 4 80
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.8 (02.11.2010 - 20.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================  Изменяемые пути  ====================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    MZList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerList.txt" ' любой файл для записи выделения
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    '=============================================================
    Titles = "Выделение Файлов и Папок "
    With WScript
      Cnt = WScript.Arguments.Count
      If Cnt < 1 Then
        Num = InputBox("Введите параметр (ЧИСЛО) нужного Вам выделения:" & vbNewLine &_
          "{1} - Выделение СВЕРХУ вниз" & vbNewLine & "{2} - Выделение СНИЗУ вверх" &_
          vbNewLine & "{3} - Выделение от курсора ВНИЗ" & vbNewLine &_
          "{4} - Выделение от курсора ВВЕРХ", Titles, 1)
      Else
        Num = .Arguments(0)
      End If
      If Len(CStr(Num)) = 0 Or Num < 1 Or  Num > 5 Then .Quit
      If Cnt < 2 Then
        N = InputBox("Введите КОЛИЧЕСТВО выделяемых файлов и папок" , Titles, 10)
      Else
        N = .Arguments(1)
      End If
      If Len(N) = 0 Then .Quit
    End With

    Dim WSH
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")

    Select Case Num
      Case 1 RunTCMC("CM523")
      Case 2 CntrStr = 1 : RunTCMC("CM523")
      Case 3 WSH.SendKeys "+{END}"
      Case 4 CntrStr = 1 : WSH.SendKeys "+{HOME}"
    End Select

    WScript.Sleep 200 : RunTCMC("CM2018") : WScript.Sleep 200
    Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    Data = Split(Clip, vbNewLine)

    If UBound(Data) < 3 Then WsEnd
    For i = 0 To N - 1
      If CntrStr = 0 Then
        M = i
      Else
        M = UBound(Data) - i
      End if
      TextZ = TextZ & Data(M) & vbNewLine
       If i = UBound(Data) Then Exit For
    Next

    RunTCMC("CM2029")
    gPath = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    If Len(gPath) > 0 Then
      gPath = gPath & "\" : TextZ = Replace(TextZ, gPath , "", 1, -1, 1)
    End If
    Program = GetPath(Program) : MZList = GetPath(MZList)
    FSO.CreateTextFile(MZList, True).Write(TextZ)
    WSH.Run Chr(34) & Program & Chr(34) & Chr(32) & "clipboard readfile " & Chr(34) & MZList & Chr(34), 2, True

    WScript.Sleep 200 : RunTCMC("CM2033") : WScript.Sleep 200
    Select Case Num
      Case 1,3 RunTCMC("CM2054")
      Case 2,4 RunTCMC("CM2053")
    End Select
    WsEnd

    Sub MsError
      MsgBox "Введены не правильные параметры" , vbOKOnly & vbInformation, Titles : Wscript.Quit
    End Sub

    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub WsEnd : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit : End Sub
    Sub RunTCMC(Param) : WSH.Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34)) : End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:29

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

    23 ноября 2011 - 18:30 / #53
  5. Offline

    Andrey_A

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

    Posts: 275

    MarkerNamesSymN.vbs
    Выделяет папки\файлы по к-ву символов в именах, которое задаётся условием
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' MarkerNamesSymN.vbs
    '========================   Описание   =======================================
    ' Выделяет папки\файлы по количеству символов в именах, которое задаётся условием
    ' Выделяет так же в окне после поиска и при cm_DirBranch
    '========================  Параметры =======================================
    ' 1-й параметр: Условия поиска для выделения. Может принимать значения:
    '    "0"    - условия вводятся в диалоге
    '    "=N" - выделяет файлы\папки, в именах которых N символов
    '    "<N" - выделяет файлы\папки, в именах которых меньше N символов
    '    ">N" - выделяет файлы\папки, в именах которых больше N символов
    ' 2-й параметр: %L
    '========================    Примеры    ======================================
    ' без параметров - выделяет все имена в текущей панели, в которых встречается условие, введённое в диалоге
    ' "<5"        - выделяет все имена в текущей панели, в которых меньше 5 символов
    ' "0" %L   - выделяет все имена в выделенном, в которых встречается условие, введённое в в диалоге
    ' "=6" %L - выделяет все имена в выделенном, в которых 6 символов
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.3 (17.12.2010 - 20.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru

    Dim FSO, WSH, zText, Stroka, i, gPath, Data
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")
    '========================  Изменяемые пути  =================================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    MzList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerList.txt"' любой файл для записи выделения
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    '==========================================================================
    Title = "Выделение файлов и папок по к-ву символов"
    With WScript
      Cnt = .Arguments.Count
      If Cnt > 0 Then
        Stroka = .Arguments(0)
        If Stroka = "0" Then MsBoxx
      Else
        MsBoxx
      End If
      If Cnt > 1 Then
        FF = FSO.OpenTextFile(.Arguments(1), 1).ReadAll
      Else
        RunTCMC("CM523") : .Sleep 200
        RunTCMC("CM2018") : .Sleep 200
        FF = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
        WSH.SendKeys "{HOME}"
      End If
    End With

    Sym = Mid(Stroka, 1, 1)
    Num = CInt(Replace(Stroka, Sym, ""))
    Data = Split(FF, vbNewLine)

    If UBound(Data) < 2 Then WsEnd
    RunTCMC("CM2029")
    gPath = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    For i = 0 To UBound(Data)
        Name = FSO.GetBaseName(Data(i)) : ln = Len(Name)
        Select Case Sym
          Case "="
            if ln = Num Then TextW
          Case ">"
            if ln > Num Then TextW
          Case "<"
            if ln < Num Then TextW
          Case Else
            WSH.Popup "Введено неправильное условие для выделения" & vbNewLine &_
          "Повторите заново!", 2, Title, 64
          WsEnd
        End Select
    Next

    If Len(zText) = 0 Then
      RunTCMC("CM524")
      WSH.Popup "Имён с длиной " & Stroka & " не найдено", 2, Title, 64
      WsEnd
    End If

    Program = GetPath(Program) : MzList = GetPath(MzList)
    FSO.CreateTextFile(MzList, True).Write(zText)
    WSH.Run Chr(34) & Program & Chr(34) & Chr(32) & "clipboard readfile " & Chr(34) & MzList & Chr(34) ,2,True
    WScript.Sleep 200 : RunTCMC("CM2033") : WScript.Sleep 200 : RunTCMC("CM2053")

    Sub MsBoxx
      Stroka = InputBox("Введите Условие поиска по к-ву символов в" & vbNewLine &_
      "именах файлов для дальнейшего выделения" & vbNewLine &_
      "Может быть 3 условия, Примеры:" & vbNewLine &_
      "=5  выделяются имена, в которых 5 символов" & vbNewLine &_
      "<5  выделяются имена, меньше 5 символов" & vbNewLine &_
      ">5  выделяются имена, больше 5 символов" , Title, "=8")
      if Len(Stroka) = 0 Then
        WSH.Popup "Не введены условия для выделения!" & vbNewLine &_
        "Повторите заново!", 2, Title, 64
        WsEnd
      End If
      WScript.Sleep 100
    End Sub

    Sub TextW
      If Len(gPath) > 0 Then
        gPath = gPath & "\"
        Data(i) = Replace(Data(i), gPath , "", 1, -1, 1)
      End If
      zText = zText & Data(i) & vbNewLine
    End Sub

    Sub RunTCMC(Param) : WSH.Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34)) : End Sub
    Sub WsEnd : Set WSH = Nothing : Set FSO = Nothing : WScript.Quit : End Sub
    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:29

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

    23 ноября 2011 - 18:31 / #54
  6. Offline

    Andrey_A

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

    Posts: 275

    RestoreSelection.vbs
    Загрузить выделение из файла
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' RestoreSelection.vbs
    '========================   Описание   ========================
    ' Загрузить выделение из файла
    '=======================   Параметры  ========================
    ' Файл с ранее сохранённым выделением
    ' "%%COMMANDER_PATH%%\Files\Lists\MarkerList\MarkerList.txt"

    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (2010 - 12.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================  Изменяемые пути  ==================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    '===========================================================
    If WScript.Arguments.Count > 0 Then
      MzList = WScript.Arguments(0)
    Else
      MsgBox "Не хватает параметров!" & vbNewLine &_
      "Должен быть минимум ОДИН параметр ''Путь\к\файлу.txt''" , vbOKOnly &_
      vbInformation, "Загрузить выделение из файла"
    End If
    Program = GetPath(Program) : MzList = GetPath(MzList)
    If Not CreateObject("Scripting.FileSystemObject").FileExists(MzList) Then WScript.Quit
    With CreateObject("WScript.Shell")
      .Run Chr(34) & Program & Chr(34) & Chr(32) & "clipboard readfile " & Chr(34) & MzList & Chr(34) , 2, True
      .Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & "CM2033" & Chr(34))
    End With
    WScript.Quit
    Function GetPath(pPath) : GetPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings(pPath) : End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:30

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

    23 ноября 2011 - 18:33 / #55
  7. Offline

    Andrey_A

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

    Posts: 275

    SaveSelection.vbs
    Сохранение выделенного в файл с дополнительными условиями или отправить преобразованное выделение в буфер обмена
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' SaveSelection.vbs
    '========================   Описание   ====================================
    ' Сохранение выделенного в файл с дополнительными условиями в два файла:
    ' - один файл для дальнейшей загрузки выделения MakerList.txt
    ' - другой с полными путями  MarkerPathList.txt
    ' Так же есть возможность отправлять преобразованное выделение в буфер обмена
    '========================  Параметры ====================================
    ' 1-й параметр: %L (обязательный)
    ' 2-й параметр: К-во подряд выделяемых элементов
    ' 3-й параметр: К-во пропущенных элементов после выделения
    ' 4-й параметр: Любой, означает, что выделение будет + отправлено в буфер
    '========================    Примеры    ====================================
    ' %L        - сохранение выделения в файл
    ' %L 1 1 - сохраняет выделение через одну строчку, что позволит загрузить выделение зеброй
    ' %L 1 5 - сохраняет выделение каждого пятого файла
    ' %L 2 3 - сохраняет выделение 2 через 3
    ' %L 0 0 1 - отправить выделение в буфер
    ' %L 1 1 1 - отправить выделение через одну строчку в буфер
    ' Автор:             Аверин Андрей
    ' Версия:          1.8 (2010 - 22.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================  Изменяемые пути  ===============================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    MarkerList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerList.txt" ' любой файл для записи выделения
    PathList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerPathList.txt" ' любой файл для записи путей
    '======================================================================
    Count = WScript.Arguments.Count
    If Count < 1 Then
      MsgBox "Не хватает параметров!" & vbNewLine &_
      "Должен быть минимум ОДИН параметр:   %L" , vbOKOnly &_
      vbInformation, "Сохранение выделенного в файл"
      Wscript.Quit
    End If

    Dim FSO, WSH
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")

    TextPath = FSO.OpenTextFile(WScript.Arguments(0), 1).ReadAll
    RunTCMC("CM2029")
    gPath = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    If Len(gPath) > 0 Then
      gPath = gPath & "\"
      TextPath = Replace(TextPath, gPath , "", 1, -1, 1)
    End If
    TextMarker = TextPath

    If Count > 2 Then
        N = CInt(WScript.Arguments(1)) : M = CInt(WScript.Arguments(2))
        If N > 0 Or M > 0 Then
          DataP = Split(TextPath, vbNewLine) :    DataM = Split(TextMarker, vbNewLine)
        If UBound(DataP) > N + 1 Then
          N = N - 1
          For i = 0 To UBound(DataP) Step N + M + 1
            On Error Resume Next
            For j = i To i + N
                TextMarkerN = TextMarkerN & DataM(j) & vbNewLine
                TextPathN = TextPathN & DataP(j) & vbNewLine
            Next
          If i > UBound(DataP) Then Exit For
          Next
         TextMarker = TextMarkerN : TextPath =TextPathN
        End if
      End If
    End if
    MarkerList = GetPath(MarkerList) : PathList = GetPath(PathList)
    FSO.CreateTextFile(MarkerList, True).Write(TextMarker) ' Сохраняем выделение в файл
    FSO.CreateTextFile(PathList, True).Write(TextPath) ' Сохраняем пути в файл
    If Count > 3 Then WSH.Run Chr(34) & Program & Chr(34) & " clipboard readfile " & Chr(34) & MarkerList & Chr(34), 2, True
    Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub RunTCMC(Param) : WSH.Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34)) : End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:31

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

    23 ноября 2011 - 18:35 / #56
  8. Offline

    Andrey_A

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

    Posts: 275

    ZebraMarker.vbs
    Выделяет файлы "зеброй" текущей в панели
    Используется NirCmd.exe и TCMC.exe - файлы можете скачать в шапке темы

    ' ZebraMarker.vbs
    '========================   Описание   =======================================
    ' Выделяет файлы "зеброй" текущей в панели
    ' Выделяет при команде cm_DirBranch и в окне после поиска
    '========================  Параметры =======================================
    ' 1-й параметр: %L (не обязательный)
    '========================   Примеры   =======================================
    ' без параметра  - выделяет всё в текущей панели (нормально работает до 10000 файлов)
    ' %L                        - Выделить ВЫДЕЛЕННОЕ "зеброй" (работает почти при любом к-ве файлов)

    ' Автор:             Аверин Андрей
    ' Версия:          1.6 (23.10.2010 - 16.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================  Изменяемые пути  =================================
    Program = "%COMMANDER_PATH%\NirCmd.exe"
    MzList = "%COMMANDER_PATH%\Files\Lists\MarkerList\MarkerList.txt" ' любой файл
    TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
    '==========================================================================
    Dim FSO, WSH
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")

    Cnt = WScript.Arguments.Count
    Select Case Cnt
      Case 0
        RunTCMC("CM523") : WScript.Sleep 300 : RunTCMC("CM2018") : WScript.Sleep 1000
        zText = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
        WScript.Sleep 200
      Case 1
        On Error Resume Next
        zText = FSO.OpenTextFile(WScript.Arguments(0), 1).ReadAll
    End Select

    RunTCMC("CM2029")
    gPath = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
    If Len(gPath) > 0 Then
      gPath = gPath & "\" : zText = Replace(zText, gPath , "", 1, -1, 1)
    End If
    zText = RegExpReplace(zText & vbNewLine, "(" & vbNewLine & ")(.*)(" & vbNewLine & ")", "$1")
    MzList = GetPath(MzList) : Program = GetPath(Program)
    WScript.Sleep 100
    FSO.CreateTextFile(MzList, True).Write(zText)
    WScript.Sleep 100
    WSH.Run Chr(34) & Program & Chr(34) & " clipboard readfile " & Chr(34) & MzList & Chr(34), 2, True
    WScript.Sleep 200
    RunTCMC("CM2033")

    Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub RunTCMC(Param) : WSH.Exec(Chr(34) & TCMC & Chr(34) & Chr(32) & Chr(34) & Param & Chr(34)) : End Sub

    Function RegExpReplace(pText, pFindStr, pNewStr)
      With New RegExp
        .Pattern = pFindStr : .IgnoreCase = True : .Global = True : RegExpReplace = .Replace(pText, pNewStr)
      End With
    End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:31

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

    23 ноября 2011 - 18:36 / #57
  9. Offline

    Andrey_A

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

    Posts: 275

    CreateHtaForDisplayPicture.vbs
    открывает на 10 секунд изображение под курсором (jpeg;jpg;gif;bmp)
    Используется FunctionsPlus.vbs - файл можете скачать в шапке темы

    ' CreateHtaForDisplayPicture.vbs
    '========================   Описание   ===========================
    ' Открывает на 10 секунд изображение под курсором (jpeg;jpg;gif;bmp)
    ' можно открывать несколько по очереди
    ' параметры %P%N

    ' Основан на коде Steve Yandl

    ' Автор:             Аверин Андрей
    ' Версия:          1.2 (26.08.2011 - 14.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '====================   Изменяемые пути   ===================================
    FuncPlus = "%COMMANDER_PATH%\Scripts\Include\FunctionsPlus.vbs"
    '========================================================================
    If WScript.Arguments.Count = 0 Then
      MsgBox "Не хватает параметров! Должен прописан Один параметр  %P%N",_
      vbOKOnly & vbInformation, "Кратковременый просмотр изображений"
      WScript.Quit
    End If

    FuncPlus = CreateObject("WScript.Shell").ExpandEnvironmentStrings(FuncPlus)
    strPictFile = WScript.Arguments(0)
    Set FSO = CreateObject("Scripting.FileSystemObject")
    strArgExt = LCase(FSO.GetExtensionName(strPictFile))
    If InStr(";jpeg;jpg;gif;bmp;png;", ";" & strArgExt & ";") = 0 Then WsEnd
    If Not FSO.FileExists(strPictFile) Then WsEnd
    Execute FSO.OpenTextFile(FuncPlus).ReadAll

    Set objShell = CreateObject("Shell.Application")
    strArgParent = FSO.GetParentFolderName(strPictFile)
    strArgFileName = FSO.GetFileName(strPictFile)
    Set objFolder = objShell.NameSpace(strArgParent)
    Set objItem = objFolder.ParseName(strArgFileName)
    strDimensions = objFolder.GetDetailsOf(objItem, 31) ' размер изображения

    If InStr(strDimensions, " x ") > 0 Then
      strSize = Replace(strDimensions, " x ", ", ") : strSize = Mid(strSize,2,Len(strSize)-2)
      ii = InStr(strSize, ",") : w = Left(strSize, ii - 1) + 20 : h = Mid(strSize, ii + 1) + 20
      strSize = w & ", " & h
    End If

    Text = "<HTML>" & vbNewLine &_
                 "<HTA:Application" & vbNewLine &_
                 "Caption=" & Chr(34) & "no" & Chr(34) & vbNewLine &_
                 "Borderstyle="&Chr(34)&"complex"&Chr(34) & vbNewLine &_
                 "Scroll=" & Chr(34) & "no" & Chr(34) & ">" & vbNewLine &_
                 "<SCRIPT Language=" & Chr(34) & "VBScript" & Chr(34) & ">" & vbNewLine &_
                 "Sub Window_onload" & vbNewLine &_
                 "Window.resizeTo " & strSize & vbNewLine &_
                 "idTimer = window.setTimeout(" & Chr(34) & "CloseShop" & Chr(34) &_
                 ", " & CStr(10 * 1000) & ", " & Chr(34) & "VBScript" & Chr(34) & ")" & vbNewLine &_
                 "End Sub" & vbNewLine &_
                 "Sub CloseShop" & vbNewLine &_
                 "window.clearTimeout(idTimer)" & vbNewLine &_
                 "self.close()" & vbNewLine &_
                 "End Sub" & vbNewLine &_
                 "</SCRIPT>" & vbNewLine &_
                 "<BODY background=" & Chr(34) & strPictFile & Chr(34) & ">" & vbNewLine &_
                 "</BODY>" & vbNewLine &_
                 "</HTML>"
    strHTAname = FFNoExistCount(FSO.GetSpecialFolder(2) & "\Temp0.hta")
    FSO.CreateTextFile strHTAname, True
    FSO.GetFile(strHTAname).OpenAsTextStream(2, 0).Write Text

    CreateObject("WScript.Shell").Run "mshta.exe " & Chr(34) & strHTAname & Chr(34), 0, True
    FSO.DeleteFile strHTAname

    Set objFolder = Nothing : Set objItem = Nothing : Set objShell = Nothing : WsEnd
    Sub WsEnd : Set FSO = Nothing : WScript.Quit : End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:32

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

    23 ноября 2011 - 18:45 / #58
  10. Offline

    Andrey_A

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

    Posts: 275

    Move.au3
    Перемещение выделенных файлов и папок без запроса

    ; Move.au3
    ; ================   Описание   =============================
    ; Перемещение выделенных файлов и папок без запроса
    ; ===============   Параметры   =============================
    ; {Список файлов} {Путь куда перемещать}
    ;%L %t
    ; Автор:             Аверин Андрей
    ; Версия:          1.0 (04.04.2011)
    ; Mail:                 Averin-And@yandex.ru
    ; Site:                  http://tc-image.3dn.ru
    ; ========================================================
    $aList = _TCHLoadFileList($CmdLine[1])
    For $i = 1 To $aList[0]
        if StringMid($aList[1], StringLen($aList[1]), 1) = "\" Then
            DirMove($aList[$i], $CmdLine[2], 1)
        else
            FileMove($aList[$i], $CmdLine[2])
        Endif
    Next

    ; Загрузка списка, чтобы выстроить список файлов, полученных
    ; с параметров %L или %l  Total Commandera
    Func _TCHLoadFileList($sFileName)
        Local $asList[1] = [0]
        Local $hfList = FileOpen($sFileName, 0)
        While 1
            $sLine = FileReadLine($hfList)
            If @error Then Exitloop
            ReDim $asList[UBound($asList)+1]
            $asList[UBound($asList)-1] = $sLine
        Wend
        FileClose($hfList)
        $asList[0] = UBound($asList)-1
        Return $asList
    EndFunc
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:33

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

    23 ноября 2011 - 18:52 / #59
  11. Offline

    Andrey_A

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

    Posts: 275

    MoveGroupFileInFolders.vbs
    Перемещение выделенных файлов\папок по заданному количеству в отдельные (создаваемые) папки

    ' MoveGroupFileInFolders.vbs
    '========================   Описание   =====================================
    ' Перемещение выделенных файлов\папок по заданному количеству в отдельные (создаваемые) папки
    '=======================   Параметры  =====================================
    ' 1-й параметр: файл-список
    ' 2-й параметр: папка\куда\перемещаются\файлы
    ' 3-й параметр: количество перемещаемых файлов в каждую папку
    '   если параметр отсутствует или параметр = 0 , то выводится диалог ввода
    '========================   Примеры   =====================================
    ' %L %t 50
    ' %L %p 50
    ' %L %t

    ' Автор:             Batya & Аверин Андрей
    ' Версия:          1.1 (07.09.2010 - 29.10.2011)
    ' Site:                  http://tc-image.3dn.ru
    '========================================================================
    Option Explicit
    '================= Изменяемые параметры =================================
    Const Rank = 3  'Минимальное количество цифр в создаваемых папках
    '========================================================================
    Dim FileList, List, F, Folder, Count, i, n, Path, Cnt, Mess
    Mess = "Перемещение выделенных файлов по заданному к-ву"
    With WScript
      Cnt = .Arguments.Count
      If Cnt < 2 Then
        MsgBox "Не хватает параметров! Должно быть минимум Два параметра" & vbNewLine &_
        "пример: %L %p", vbOKOnly & vbInformation, Mess
       .Quit
      End If
      FileList = .Arguments(0) : Folder = .Arguments(1)
      If Cnt > 2 Then
        Count = CInt(.Arguments(2))
      Else
        InputNumer
      End If
      If Count <= 0 Then InputNumer
    End With

    With CreateObject("Scripting.FileSystemObject")
      List = Split(.OpenTextFile(FileList).ReadAll, vbNewLine)
      If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
      n = 1 : i = Count

      For Each F In List
        If F <> "" Then
          If i >= Count Then
            If Len(CStr(n)) < Rank Then
              Path = Folder & Right(String(Rank, "0") & CStr(n), Rank) & "\"
            Else
              Path = Folder & CStr(n) & "\"
            End If
            If Not .FolderExists(Path) Then .CreateFolder(Path)
            i = 1 : n = n + 1
          Else
            i = i + 1
          End If
          If .FileExists(F) Then .MoveFile F, Path
          If .FolderExists(F) Then
            If Right(F, 1) = "\" Then F = Left(F, Len(F) - 1)
            .MoveFolder F, Path
          End If
        End If
      Next
    End With
    Wscript.Quit

    Sub InputNumer
      Count = InputBox("Введите ЧИСЛО по СКОЛЬКО" & vbNewLine &_
      "файлов перемещать в отдельные папки", Mess, 3)
      If Len(Count) = 0 Then WScript.Quit
      Count = CInt(Count)
      If Count = 0 Then Count = 3
    End Sub


    пример MoveFileInAssociationsFolders.txt
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:33

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

    23 ноября 2011 - 18:55 / #60

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

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