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

    MoveInEveryOneNameFolder.vbs
    Перемещение выделенных файлов каждый в отдельную именную папку

    ' MoveInEveryOneNameFolder.vbs
    '========================   Описание   =========================
    ' Перемещение выделенных файлов каждый в отдельную именную папку
    ' В параметрах вызова из TC должно быть прописанo Два параметра:
    ' {список файлов} {"путь\перемещения\"}
    ' %L %p
    ' %L %t
    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (2010 - 29.10.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '============================================================
    If WScript.Arguments.Count > 1 Then
      With CreateObject("Scripting.FileSystemObject")
        Set ListFile = .OpenTextFile(WScript.Arguments(0), 1)
        tPath = WScript.Arguments(1)

        Do While Not ListFile.AtEndOfStream
            SelFile = ListFile.ReadLine :     Name = .GetBaseName(SelFile)
            If Not .FolderExists(tPath & Name) Then .CreateFolder(tPath & Name)
          .MoveFile SelFile, tPath & Name & "\"
        Loop
      End With
      Set ListFile = Nothing
    Else
        MsgBox "Не заданы параметры!" & vbNewLine &_
       "Должно быть ДВА параметра. Пример: %L %t",_
        vbOKOnly + vbInformation, "Перемещение файлов каждый в именную папку"
    End If
    WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:34

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

    23 ноября 2011 - 18:57 / #61
  3. Offline

    Andrey_A

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

    Posts: 275

    MoveMusicTracks.au3
    Перемещение выделенных музыкальных файлов в папки c именами артистов

    ;MoveMusicTracks.au3
    ; ========================   Описание   ============================
    ; Перемещение выделенных музыкальных файлов в папки c именами артистов
    ;(если папки нет, она создаётся)
    ; ========================  Параметры ============================
    ; {Список файлов} {Путь куда перемещать}
    ;%L %t
    ;
    ; Автор:             Аверин Андрей
    ; Версия:          1.0 (04.04.2011)
    ; Mail:                 Averin-And@yandex.ru
    ; Site:                  http://tc-image.3dn.ru
    ; ===============================================================
    $aList = _TCHLoadFileList($CmdLine[1])

    $Stroka = "&;Feat; и;Ft.;Vs.;(;+;Феат;,;-and-;_and_; and при уч.;feat.; При Участии;,; pres; pres.; present; vs; vs.; ft;(vs;уч. "
    $Rez = StringSplit($Stroka, ";", 1)
    $k = 0

    For $i = 1 To $aList[0]
        $sTemp = $aList[$i]
        $sTemp = StringRight($sTemp, StringLen($sTemp) - StringInStr($sTemp,"\",1,-1))
      if StringInStr($sTemp, " - " ,1, 1) > 0 Then
          For $s = 1 To UBound($Rez) - 1
              $sss = StringUpper($Rez[$s])
              if StringInStr(StringUpper($sTemp), $sss , 1, 1) > 0 Then
                  if StringInStr($sTemp, " - " ,1, 1) > StringInStr(StringUpper($sTemp), $sss ,1, 1) Then
                      $sTemp = StringLeft($sTemp, StringInStr(StringUpper($sTemp), $sss ,1, 1) - 1)
                      $s = UBound($Rez) - 1
                      $k = 1
                  Endif
              Endif
          Next
          if $k = 0 Then $sTemp = StringLeft($sTemp, StringInStr($sTemp, "-" ,1, 1) - 1)
          $k = 0
          $sTemp = StringStripWS($sTemp, 3); удалить пробелы в начале и вконце строки
          if StringLen($sTemp) <> 0 Then
             DirCreate($CmdLine[2] & $sTemp); создаём папку именем артиста
             FileMove($aList[$i], $CmdLine[2] & $sTemp)
          Endif
        Endif
    $sTemp = ""
    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:34

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

    23 ноября 2011 - 18:58 / #62
  4. Offline

    Andrey_A

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

    Posts: 275

    MoveOnLevelUp.vbs
    Перемещение выделенных файлов\папок на уровень вверх

    ' MoveOnLevelUp.vbs
    '=====================   Описание   ======================
    ' Перемещение выделенных файлов\папок на уровень вверх
    ' Параметры: {файл-список}
    ' Пример  %L
    ' Автор:             Аверин Андрей
    ' Версия:          1.3 (11.05.10 - 14.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=======================================================
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
    Do While Not ListFile.AtEndOfStream
       SelFile = ListFile.ReadLine : rPath = FName(FName(SelFile)) & "\"
       On Error Resume Next
       If FSO.FileExists(SelFile) Then FSO.MoveFile SelFile, rPath
       If FSO.FolderExists(SelFile) Then FSO.MoveFolder Left(SelFile, Len(SelFile) - 1), rPath
    Loop
    ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : WScript.Quit
    Function FName(pPath) : FName = FSO.GetParentFolderName(pPath) : End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:35

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

    23 ноября 2011 - 18:58 / #63
  5. Offline

    Andrey_A

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

    Posts: 275

    AddFilesInListTCIgnore.vbs
    Добавление имён выделенных файлов в список исключений TC с активацией фильтра
    Используется TCFS2.exe - файл можете скачать в шапке темы

    ' AddFilesInListTCIgnore.vbs
    '========================   Описание   =====================================
    '  Добавление имён выделенных файлов в список исключений TC с активацией фильтра
    '  Параметры: %F "<путь к файлу-списку исключений>"
    '  Пример: %F "%%COMMANDER_PATH%%\tcignore.txt"
    ' Автор:             Flasher & Аверин Андрей
    ' Версия:          1.1 (15.07.2011 - 21.11.2011)
    ' Site:                  http://tc-image.3dn.ru
    '====================   Изменяемые пути   ==================================
    TCFS2 = "%COMMANDER_PATH%\Utilities\TotalCom\TCFS2\TCFS2.exe"
    '========================================================================
    With CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    .OpenTextFile(CreateObject("WScript.Shell").ExpandEnvironmentStrings(WScript.Arguments(1)), 8, True).Write .OpenTextFile(WScript.Arguments(0), 1).ReadAll
    End With
    CreateObject("WScript.Shell").Exec TCFS2 & " /ef ""tcm(2922) tcm(2922), test(tcini(Configuration, IgnoreListFileEnabled, #)) | tcm(2922)"""
    WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:35

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

    23 ноября 2011 - 19:05 / #64
  6. Offline

    Andrey_A

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

    Posts: 275

    ReplaceTextAss.vbs
    Быстрое добавление файла в ассоциации ТС + вызов окна ассоциаций TC + ENTER (обновление)
    Используется TCMC.exe - файл можете скачать в шапке темы

    ' ReplaceTextAss.vbs
    '========================   Описание   =====================================
    ' Быстрое добавление файла в ассоциации ТС + вызов окна ассоциаций TC + ENTER (обновление)
    ' Заменяет FilterN= на FilterN=Имя или расширение в файле ассоциаций
    '=======================   Параметры  =====================================
    ' 1-й параметр: файл, где прописаны ассоциации
    ' 2-й параметр: текст для поиска (FilterN=)
    ' 3-й параметр: текст для замены (FilterN=;%N)
    '========================   Примеры   =====================================
    ' "%%COMMANDER_PATH%%\WinAssociations.ini" "Filter5=" "Filter5=;*.%E"     - Добавление РАСШИРЕНИЯ под курсором в Filter_5
    ' "%%COMMANDER_PATH%%\Wincmd.ini" "Filter5=" "Filter5=;%N"          - Добавление ИМЕНИ под курсором в Filter_5

    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (2010 - 28.10.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================================================================
    Option Explicit
    Dim F, Str1, Str2, Text

    With WScript
      If .Arguments.Count < 3 Then
        MsgBox "Не хватает параметров!!!", vbOKOnly & vbInformation,_
        "Добавление файла в ассоциации" : .Quit
      End If
      F = .Arguments(0) : Str1 = .Arguments(1) : Str2 = .Arguments(2)
    End With

    With CreateObject("Scripting.FileSystemObject")
      F = .GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(F))
      Text = .OpenTextFile(F, 1).ReadAll
      Text = Replace(Text, Str1, Str2, 1, -1, 1)
      .OpenTextFile(F, 2).Write Text
    End With

    With CreateObject("WScript.Shell")
      WScript.Sleep 100
      .Exec("%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe 150 CM519")
      WScript.Sleep 100 : .SendKeys "{Enter}" : WScript.Quit
    End With
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:36

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

    23 ноября 2011 - 19:07 / #65
  7. Offline

    Andrey_A

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

    Posts: 275

    YesNoAssociations.vbs
    Включение\Выключение внутренних ассоциации в Total Commander
    Используется TCMCWindow.exe - файл можете скачать в шапке темы

    ' YesNoAssociations.vbs
    '========================   Описание   =====================================
    ' Включение\Выключение внутренних ассоциации в Total Commander
    ' Автор:             Аверин Андрей
    ' Версия:          1.0 (09.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '====================   Изменяемые пути   ===================================
    Ass = "%COMMANDER_PATH%\WinAssociations.ini" ' файл, где прописаны ассоциации
    Exe = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMCWindow.exe" ' утилита
    '========================================================================
    S1 = "[+Associations]" : S2 = "[Associations]"
    Ass = CreateObject("WScript.Shell").ExpandEnvironmentStrings(Ass)
    Txt = CreateObject("Scripting.FileSystemObject").OpenTextFile(Ass).ReadAll
    If InStr(Txt, S1) > 0 Then Txt = Replace(Txt, S1, S2) Else Txt = Replace(Txt, S2, S1) End If
    CreateObject("Scripting.FileSystemObject").OpenTextFile(Ass, 2).Write Txt
    CreateObject("WScript.Shell").Exec(Chr(34) & Exe & Chr(34) & " ttcmc=CM519 pause=40 {ENTER}")
    WScript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:37

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

    23 ноября 2011 - 19:08 / #66
  8. Offline

    Andrey_A

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

    Posts: 275

    RunFilesExtInProgram.vbs
    Запуск ВЫДЕЛЕННЫХ файлов ПО ОЧЕРЕДИ в нужной вам программе заданной в параметрах

    ' RunFilesExtInProgram.vbs
    '========================   Описание   =====================================
    ' Запуск ВЫДЕЛЕННЫХ файлов ПО ОЧЕРЕДИ в нужной вам программе заданной в параметрах
    ' если расширение не совпадает с ассоциациями, просто открывается программа
    '========================  Параметры =====================================
    ' 1-й параметр: файл список
    ' 2-й параметр: Программа
    ' 3-й параметр: Строка расширений ";ext1;ext2;ext3;"
    '========================   Примеры   =====================================
    ' %L "%%COMMANDER_PATH%%\AkelPad.exe" ";txt;ini;mnu;"
    ' %L "%%COMMANDER_PATH%%\Plugins\wlx\Imagine\Imagine.exe" ";txt;ini;mnu;"
    ' %L "%COMMANDER_PATH%\Programs\Players\Winamp\Winamp.exe" ";mp3;wma;"

    ' Автор:             Аверин Андрей
    ' Версия:          1.0 (21.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '======================================================================
    If WScript.Arguments.Count < 3 Then
      MsgBox "Не хватает параметров!", vbOKOnly & vbInformation, "" : WScript.Quit
    End If

    With CreateObject("Scripting.FileSystemObject")
      Set ListFile = .OpenTextFile(GetPath(WScript.Arguments(0)), 1)
      Program = GetPath(WScript.Arguments(1))
        If Not .FileExists(Program) Then
          MsgBox "Не верно указана программа", vbOKOnly & vbInformation, "" : WScript.Quit
        End If
      LineExt = WScript.Arguments(2)
      Do While Not ListFile.AtEndOfStream
           Param = GetPath(ListFile.ReadLine) : Ext = LCase(.GetExtensionName(Param)) : File = ""
        If InStr(LineExt, ";" & Ext & ";") > 0 Then File = Chr(32) & Chr(34) & Param & Chr(34)
          CreateObject("WScript.Shell").Run Chr(34) & Program & Chr(34) & File , 1, False
      Loop
    End With
    ListFile.Close : Set ListFile = Nothing : WScript.Quit

    Function GetPath(pPath)
      GetPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings(pPath)
    End Function
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:42

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

    23 ноября 2011 - 19:15 / #67
  9. Offline

    Andrey_A

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

    Posts: 275

    RunFilesInProgram.vbs
    Запуск выделенных файлов по очереди в прописанной в скрипте программе

    ' RunFilesInProgram.vbs
    '========================   Описание   =====================================
    ' Запуск выделенных файлов по очереди в программе
    ' если расширение файла не совпадает с поддерживаемыми , просто открывается программа
    ' если перетянуть любой файл на кнопку, то он также откроется в программе
    ' Пример: %L
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.1 (21.11.2011 - 01.12.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '=================   Изменяемые параметры   ================================
    Program = "%COMMANDER_PATH%\AkelPad.exe"    ' программа
    LineExt = ";txt;ini;mnu;" ' строка поддерживаемых расширений
    '========================================================================
    Dim WSH
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Cnt = WScript.Arguments.Count : k = 0

    Program = GetPath(Program)
    If Not FSO.FileExists(Program) Then
      MsgBox "Не верно указана программа", vbOKOnly & vbInformation, "" : WsEnd
    End If
    If Cnt = 0 Then
      RunProgram : WsEnd
    End If
    Param = GetPath(WScript.Arguments(0))
    If LCase(FSO.GetExtensionName(Param)) = "tmp" Then
      List = Split(FSO.OpenTextFile(Param).ReadAll, vbNewLine)
    Else
      Cnt = 1 : RunProgram : WsEnd
    End If

    For i = 0 To Ubound(List)
        Param = GetPath(List(i))
        Ext = LCase(FSO.GetExtensionName(Param))
      If InStr(LineExt, ";" & Ext & ";") > 0 Then
        Cnt = 1 : k = 1 : RunProgram
      End If
    Next
    if k = 0 Then
      Cnt = 0 : Param = "" : RunProgram
    End If
    WsEnd

    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub WsEnd : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit : End Sub

    Sub RunProgram
      If Cnt = 1 Then Param = Chr(32) & Chr(34) & Param & Chr(34)
        WSH.Run Chr(34) & Program & Chr(34) & Param , 1, False
    End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:42

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

    23 ноября 2011 - 19:17 / #68
  10. Offline

    Andrey_A

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

    Posts: 275

    RunFilesUserProgram.vbs
    Запуск выделенных файлов по очереди в нужных вам программах прописанных в скрипте

    ' RunFilesUserProgram.vbs
    '========================   Описание   =====================================
    ' Запуск выделенных файлов по очереди в нужных вам программах прописанных в скрипте
    ' если расширение не совпадает с ассоциациями, просто открывается программа
    '========================  Параметры =====================================
    ' 1-й параметр: файл список
    ' 2-й параметр: N - номер ассоциаций
    '========================   Примеры   =====================================
    ' %L 1 - открываются файлы в AkelPad
    ' %L 2 - открываются файлы в Imagine
    ' %L 3 - открываются файлы в Vlc
    '
    ' Автор:             Аверин Андрей
    ' Версия:          1.0 (21.11.2011)
    ' Mail:                 Averin-And@yandex.ru
    ' Site:                  http://tc-image.3dn.ru
    '========================================================================
    If WScript.Arguments.Count <2 Then
      MsgBox "Не хватает параметров!", vbOKOnly & vbInformation, "" : WScript.Quit
    End If

    Dim WSH, File
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set WSH = CreateObject("WScript.Shell")
    Set ListFile = FSO.OpenTextFile(GetPath(WScript.Arguments(0)), 1)

    Do While Not ListFile.AtEndOfStream
        Param = GetPath(ListFile.ReadLine)
        Ext = LCase(FSO.GetExtensionName(Param))
      File = ""
    ' Ассоциации. LineExt - строка расширений, Program - Программа
    ' Необходимо вставить свои пути
      Select Case WScript.Arguments(1)
        Case 1
          LineExt = ";txt;ini;mnu;"
          Program = "%COMMANDER_PATH%\AkelPad.exe"
          CheckExt
        Case 2
          LineExt = ";jpg;png;gif;"
          Program = "%COMMANDER_PATH%\Plugins\wlx\Imagine\Imagine.exe"
          CheckExt
        Case 3
          LineExt = ";mp3;wma;"
          Program = "%COMMANDER_PATH%\Programs\Players\Winamp\Winamp.exe"
          CheckExt
    ' условий может быть сколько угодно
    '     Case 4
    '       LineExt = ";ext1;ext2;ext3;"
    '       Program = "%COMMANDER_PATH%\Программа.exe"
    '       CheckExt
    '     Case 5
    '       LineExt = ";ext1;ext2;ext3;"
    '       Program = "%COMMANDER_PATH%\Программа.exe"
    '       CheckExt
      End Select
        Program = GetPath(Program)
      If Not FSO.FileExists(Program) Then
        MsgBox "Не верно указана программа", vbOKOnly & vbInformation, "" : WsEnd
      End If
        WSH.Run Chr(34) & Program & Chr(34) & File , 1, False
    Loop
    WsEnd

    Function GetPath(pPath) : GetPath = WSH.ExpandEnvironmentStrings(pPath) : End Function
    Sub WsEnd : ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : Set WSH = Nothing : WScript.Quit : End Sub

    Sub CheckExt
      If InStr(LineExt, ";" & Ext & ";") > 0 Then File = Chr(32) & Chr(34) & Param & Chr(34)
    End Sub
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:42

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

    23 ноября 2011 - 19:17 / #69
  11. Offline

    Andrey_A

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

    Posts: 275

    NameByDate.vbs
    Переименование выделенного -- добавление даты перед именем

    ' NameByDate.vbs
    '========================   Описание   =====================
    ' Переименование выделенного -- добавление даты перед именем
    ' Параметры %L
    ' Автор:             Volniy & Аверин Андрей
    ' Версия:          1.1 (2006 - 14.11.2011)
    ' Site:                  http://tc-image.3dn.ru
    '======================================================
    With CreateObject("Scripting.FileSystemObject")
      Set StreamFile = .OpenTextFile(WScript.Arguments(0), 1)
      Do While Not StreamFile.AtEndOfStream
        Set theFile = .GetFile(StreamFile.ReadLine)
        theFile.Name = "[" & FormatDateTime(Date,vbShortDate) & "] " & theFile.Name
      Loop
    End With
    Set theFile = Nothing : Set StreamFile = Nothing : Wscript.Quit
    Сообщение отредактировал Andrey_A 11 марта 2012 - 20:45

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

    23 ноября 2011 - 19:21 / #70

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

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