Скрипты для Total Commander
-
Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия
Тема тестирования скриптов создана для увеличения функциональности Total Commander
Всё это делается для тех, кто хочет экономить время и автоматизировать работу
Огромное спасибо участникам, авторам и всем повлиявшим на тему
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
В этой теме Каждый может выложить свой скрипт, написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... - главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению.
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
В теме "Тестирование и заказ скриптов" Каждый может протестировать, дать свой комментарий (все комментарии из этой темы будут удаляться)...если есть интересная идея, вы так же можете поделиться ей в соседней теме и заказать скрипт, а вдруг она покажется интересной для авторов...
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#Сообщение отредактировал LonerD 25 апреля 2017 - 04:38Читайте: Справочные материалы по работе c TC + Онлайн справка TC
22 ноября 2011 - 13:03 / #1 -
Цитата: Andrey_Aкомментарии в скриптах на английском, причём на русских сайтах.
Наверное, потому, что синтаксис самих скриптов основан на английском языке.
Но можно и трёхязычные комментарии сбацать.Цитата: Andrey_AНи разу не видел такого
Windows XP SP3 rus.
Я уже писал, что постоянно крашит. Даже не крашит, продолжает работать, но выскакивает ошибка. Дело, как оказалось в получении текста из буфера:
CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")5 августа 2012 - 00:15 / #141 -
Цитата: LonerDЯ уже писал, что постоянно крашит
Послал в квип
1. Тестовый Скрипт - не должен крошить
2. TCIMG.exe 1.6
Добавил
"tcimg=$p0" - запрещает прорисовку окна
"tcimg=$p1" - разрешает прорисовку окна
всё это тестовые версии - доработка будет, но даже исходя из этого у меня скрипт работает шикарно - родительского каталога вообще не видно, а только параллельные
так что стремимся к идеалу)Читайте: Справочные материалы по работе c TC + Онлайн справка TC
5 августа 2012 - 01:11 / #142 -
FileListDreamLair.vbs'================================================================
' Create Filelist
' Створення списку файлів
' Создание списка файлов
'================================================================
' Parameters / Параметры / Параметри:
' 1: {files or directory}/{файли або каталог}/{файлы или каталог}
' 2: {filelist}/{підсумковий файл-список}/{итоговый файл-список}
' 3: {recursive path | 1 or 0}
' {рекурсивний список (включаючи підкаталоги) | 1 або 0}
' {рекурсивный список (включая подкаталоги) | 1 или 0}
' 4: {relative path | 1 or 0}
' {відносні шляхи | 1 або 0}
' {относительные пути | 1 или 0}
' 5: {new filelist each time | 1 or 0}
' {новий список кожного разу | 1 або 0}
' {новый список каждый раз | 1 или 0}
'================================================================
' Якщо перший параметр - шлях до каталогу, то обробляється
' тільки цей каталог, при цьому він вважається активним.
' Если первый параметр - путь к каталогу, то обрабатывается
' только этот каталог, причём он считается активным.
'================================================================
' Якщо для параметра {файл-список} не вказано повний шлях,
' то файл-список створюється в активному каталозі.
' Если для параметра {файл-список} не указан полный путь,
' то файл-список создаётся в активном каталоге.
'================================================================
' При рекурсивній обробці (третій параметр = 1) обробляються
' також всі файли і підкаталоги виділених каталогів.
' При рекурсивной обработке (третий параметр = 1) обрабатываются
' также все файлы и подкаталоги выделенных каталогов.
'================================================================
' При релятивній обробці (четвертий параметр = 1) шляхи до файлів
' в списку файлів вказуються відносно активного каталогу.
' При рекурсивной обработке (четвёртый параметр = 1) пути к файлам
' в списке файлов указываются относительно активного каталога.
'================================================================
' Якщо п'ятий параметр дорівнює 0, то підсумковий файл-список
' буде перезаписуватись; якщо 1 - створюватися новий
' Если пятый параметр равен 0, то итоговый файл-список
' будет перезаписываться; если 1 - создаваться новый
'================================================================
' У функції CreateTextFile третій параметр відповідає за кодування
' створюємого файлу: True - Unicode, False - ASCII.
' В функции CreateTextFile третий параметр отвечает за кодировку
' создаваемого файла: True - Unicode, False - ASCII.
'================================================================
' Examples / Приклади / Примеры:
' %L "c:\path\Filelist.lst" 1 1 1
' %P%N Filelist.lst 0 0 0
'================================================================
' Script: FileListDreamLair.vbs
' Author: Batya & LonerD
' Build: 1.3 (2012.08.10)
' OfSite: http://dreamlair.net
'================================================================
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Cnt = WScript.Arguments.Count
If Cnt < 4 Then Wscript.Quit
With WScript.Arguments
FF = .Item(0) : TargetList = .Item(1) : Recursive = .Item(2) : Relative = .Item(3) : NewFile = .Item(4)
End With
FolderMode = FSO.FolderExists(FF)
If FolderMode Then
CurrentFolder = FF
Else
CurrentFolder = CreateObject("WScript.Shell").CurrentDirectory
End If
If Right(CurrentFolder, 1) <> "\" Then CurrentFolder = CurrentFolder & "\"
LenCF = Len(CurrentFolder)
If InStr(TargetList, ":") = 0 Then TargetList = CurrentFolder & TargetList
If FolderMode Then
List = Process(CurrentFolder)
Else
With FSO.OpenTextFile(FF, 1)
Do While Not .AtEndOfStream
F = .ReadLine : List = List & Process(F)
Loop
End With
End If
Select Case NewFile
Case 0 FSO.CreateTextFile(TargetList, True, True).Write List
Case 1 FSO.CreateTextFile(NextName(TargetList), True, True).Write List
End Select
Set FSO = Nothing : Wscript.Quit()
Function Process(pPath)
If FSO.FileExists(pPath) Then Process = Cut(pPath) & vbNewLine
If FSO.FolderExists(pPath) Then
If Recursive = 0 Then
Process = Cut(pPath) & vbNewLine
Else
For Each lF in FSO.GetFolder(pPath).Files
Process = Process & Cut(lF) & vbNewLine
Next
For Each lF in FSO.GetFolder(pPath).SubFolders
Process = Process & Process(lF)
Next
End If
End If
End Function
Function Cut(pPath)
Select Case Relative
Case 0 Cut = Mid(pPath, 1)
Case 1 Cut = Mid(pPath, LenCF + 1)
End Select
LenCut = Len(Cut)
If Right(Cut, 1) = "\" Then Cut = Left (Cut,LenCut-1)
End Function
Function NextName(pFilePath)
Const lQ = 2 'Минимальное количество цифр в номере
With CreateObject("Scripting.FileSystemObject")
lPath = .GetParentFolderName(pFilePath)
If lPath <> "" Then lPath = lPath & "\"
lName = .GetBaseName(pFilePath)
lExt = .GetExtensionName(pFilePath)
NextName = lPath & lName & lAdd & "." & lExt
Do While .FileExists(NextName)
li = li + 1
If li < 10^lQ Then
lAdd = Right(String(lQ, "0") & li, lQ)
Else
lAdd = li
End If
NextName = lPath & lName & "_" & lAdd & "." & lExt
Loop
End With
End Function
'================================================================
По сравнению с оригинальным скриптом от Batya, который выложен на форуме wincmd у меня добавлена возможность создавать список с полными путями, список только выделенных файлов и папок без рекурсии (при этом конечные слеши в именах каталогов обрезаются), а также включён в виде параметра способ создания нового списка файлов или же перезаписывания существующего.Сообщение отредактировал LonerD 26 августа 2012 - 19:5510 августа 2012 - 11:53 / #143 -
LonerD
Я не очень понял из названия, что делает этот скрипт? С какими параметрами создаются списки и зачем они нужны?
"причём она считается текущей" - правильно писать не текущей, а рабочей или активной.
"файл-список создаётся в текущем каталоге" - аналогично (и лучше везде писать что-то одно - каталог/папка)' В функции CreateTextFile третий параметр отвечает за кодировкуЗачем эта лишняя информация? Если бы я так для каждой функции писал, где какой параметр, то комментирии занимали бы в 3 раза больше самого кода. Ты либо параметр добавляй, либо оставь как есть. Кому какая разница, какая там кодировка создаётся? Главное, чтобы файл открывался с читабельным содержимым.
' создаваемого файла: True - Unicode, False - ASCII.
' У функції CreateTextFile третій параметр відповідає за кодування
' створюємого файлу: True - Unicode, False - ASCII.Цитата: LonerDдобавлена возможность создавать список с полными путямиЗачем добалять то, что делается
Сообщение отредактировал Flasher 11 августа 2012 - 12:3011 августа 2012 - 10:11 / #144 -
Flasher
Спасибо за замечания.
Дополнил описание параметров.Цитата: FlasherЯ не очень понял из названия, что делает этот скрипт?
Название как название
Filelist - список файлов. DreamLair - думаю, не нужно пояснять
Создание текстового файла, в котором будут перечислены все указанные файлы по одному на строку.Цитата: Flasher(и лучше везде писать что-то одно - каталог/папка)
Да, я пытаюсь, хоть и не всегда успешно, использовать правильные термины.
Выделить папку. Но структура каталогов...
Создать файл в каталоге (?) или в папке (?).
В общем, заменил пока везде на "каталог".Цитата: Flasher"причём она считается текущей" - правильно писать не текущей, а рабочей или активной.
Фраза перекочевала из скрипта от Batya
Заменил.Цитата: FlasherЗачем эта лишняя информация?...Кому какая разница, какая там кодировка создаётся?
Вполне полезная информация. Хотел вначале действительно отдельным параметром сделать, потом решил оставить просто пояснение (да хотя бы для себя чтоб не забыть или для тех, кто столкнувшись со скриптом захотят сделать список в ASCII, но не будут знать как именно это сделать).
Всё-равно ведь при интерпретации комментарии не учитываются и на работу скрипта не повлияют.Цитата: FlasherЗачем добалять то, что делается простой кнопкой
Простой кнопкой создаётся только список выделенного и только в текущем каталоге и только с полными путями.
Скрипт может сделать это же:
%L %Tlist.txt 0 0 0
Но скрипт может обработать не только выделенные элементы также и все подкаталоги выделенных каталогов и содержащиеся в них файлы. Может выдавать список не с полными, а с относительными путями. Может не затирать список, а создавать каждый раз новый.
Да, всё это можно сделать и вручную - Ctrl+B и создать список выделенного, потом открыть в текстовом редакторе и поудалять полные пути, оставив лишь относительные, сделать копию текущего файла чтобы он не затирался при создании нового списка... Но это же касается и всех скриптов - автоматизация процесса. Нажал одну кнопку - и готов список в желаемом формате и виде.11 августа 2012 - 15:04 / #145 -
Цитата: LonerDНазвание как названиеСтоп. Название у скрипта
Filelist - список файлов. DreamLair - думаю, не нужно пояснять smile
Создание текстового файла, в котором будут перечислены все указанные файлы по одному на строку.Цитата: LonerDСоздание списка файлов с параметрамиПричём тут DreamLair?
Название подразумевает, что рядом с файлами (путями) будут ещё какие-то параметры.
Или же фразу "с параметрами" вообще убрать, если подразумевается лишь участие функциональных ключей. Никто же не пишет в названии какой-то консольной утилиты "с ключами".
Цитата: LonerDВполне полезная информация. ... или для тех, кто столкнувшись со скриптом захотят сделать список в ASCII, но не будут знать как именно это сделатьТы ещё справку по WSH туда запихни, ой как полезно будет.
Цитата: LonerDНо скрипт может обработать не только выделенные элементы также и все подкаталоги выделенных каталогов и содержащиеся в них файлы.Аргумент.Цитата: LonerDпотом открыть в текстовом редакторе и поудалять полные пути, оставив лишь относительныеЯ привёл цитату касаемо полных путей, заметь.Сообщение отредактировал Flasher 11 августа 2012 - 16:1211 августа 2012 - 16:11 / #146 -
Цитата: FlasherПричём тут DreamLair?
Это типа "товарный знак".
Кста, я в названия некоторых твоих скриптов (которые использую) тоже дописал ...Flasher.vbs (OpeninHxDFlasher.vbs, например) чтобы по названию сразу отличать от других скриптов со схожим функционалом.
Цитата: FlasherИли же фразу "с параметрами" вообще убрать, если подразумевается лишь участие функциональных ключей.
Подразумевается, что с помощью скрипта можно получить не просто список выделенных файлов, а с возможностью параметрами задать различные варианты представления информации (с полными путями или без них, с рекурсией...).
Возможно, по-английски это бы звучало как Filelist Extended. По-русски "Расширенный список файлов" не очень очевидное пояснение.
Создание списка файлов с возможностью в параметрах настроить желаемое содержимое списка и отображение этого содержимого. Так, что ли...Цитата: FlasherЯ привёл цитату касаемо полных путей, заметь.
Да, в моей цитате говорится о скрипте, а в изначальной версии скрипта (за авторством Batya) полных путей не было.
В любом случае возможность заменить скриптом функционал указанной тобою кнопки не является поводом использовать скрипт для этой цели, а является лишь частным случаем функционала скрипта при задании определённого набора параметров.
Для создания простого списка файлов (с дописыванием или заменой текущего списка) я использую схожую с твоей кнопку, а уже для более сложных вариаций - и был модифицирован скрипт.
Конкретно скрипт в следующей версии сборки TC DreamLair будет создавать новый список файлов:
Список файлов с абсолютными путями
Список файлов с относительн. путями
Список рекурс. с абсолютными путями
Список рекурс. с относительными путями11 августа 2012 - 17:34 / #147 -
Цитата: LonerDчтобы по названию сразу отличать от других скриптов со схожим функционалом.Для себя можно, я не против.

Цитата: LonerDПодразумевается, что с помощью скрипта можно получить не просто список выделенных файлов, а с возможностью параметрами задать различные варианты представления информации (с полными путями или без них, с рекурсией...)Гмммм..... Найди хотя бы один пример на wincmd.ru, где "с параметрами" означает, что там можно что-то задать. Скрипт без параметров для ТС в подавляющем большинстве - не скрипт для ТС. И писать везде "с параметрами", мягко говоря, не круто. Как будто тот, кто видет шапку, не заметит этих самых параметров, посмотрев только на название. Ты в это веришь?
Цитата: LonerDСоздание списка файлов с возможностью в параметрах настроить желаемое содержимое списка и отображение этого содержимого. Так, что ли...Да не надо ничего расписывать. Достаточно одной фразы "Создание списка из выделенных элементов", в крайнем случае в скобках приписать "опционально: форма представления и рекурсия".
Об остальном мог уже не писать, я же написал касаемо рекурсии - "Аргумент"..Сообщение отредактировал Flasher 13 августа 2012 - 21:1212 августа 2012 - 19:12 / #148 -
'Архивация с помощью WCX плагинов'================================================================
' Archivate selected files and folders using WCX plugins TC
' Архівація виділених файлів і папок за допомогою WCX плагінів TC
' Архивация выделенных файлов и папок с помощью WCX плагинов TC
'================================================================
' Parameters / Параметри / Параметры:
' 1: {target directory}/{каталог призначення}/{каталог назначения}
' 2: {archive name}/{ім'я файлу архіву}/{имя файла архива}
' (if filename is empty "", then create separate archives, one per selected file/dir)
' (якщо ім'я файлу пусте "", то архівувати кожен файл у окремий архів)
' (если имя файла пустое "", то каждый файл помещается в отдельный архив)
' 3: {archive extension}/{розширення архиву}/{расширение архива}
' 4: {archive type: 0 - normal | 1 - SFX}
' {тип архіву: 0 - звичайний | 1 - SFX}
' {тип архива: 0 - обычный | 1 - SFX}
' 5: {move to archive: 0 - don't delete files | 1 - delete files}
' {переміщати в архів: 0 - не видаляти файли | 1 - видаляти файли}
' {перемещать в архив: 0 - не удалять файлы | 1 - удалять файлы}
'================================================================
' Example / Приклад / Пример: %T "%O" "rar" 0 0
'================================================================
' Script: ArhiveDreamLair.vbs
' Author: Pavel Dergunov (idea - Andrey Averin)
' Build: 1.1 (2012.08.17)
' OfSite: http://dreamlair.net
'================================================================
TCIMG = "%commander_path%\Plugins\exe\TCIMG\TCIMG.exe"
'================================================================
Path = "C:\" : Name = "*.*" : Arc = "7z" : ArcExe = "0" : ArcMove = "0"
'================================================================
With WScript.Arguments
On Error Resume Next
Path = .Item(0) : Name = .Item(1) : Arc = .Item(2) : ArcExe = .Item(3) : ArcMove = .Item(4)
End With
If Len(Name) = 0 Then Name = "*.*"
Select Case ArcExe
Case 0 Lines = Chr(34) & Arc & ":" & Path & Name & "." & Arc & Chr(34)
Case 1 Lines = Chr(34) & Arc & ":" & Path & Name & ".exe" & Chr(34)
End Select
' If Arc = "z" Then Lines = "_" & Lines
If Name = "*.*" Then
Select Case ArcMove
Case 0 RunTCIMG("tcimg=50~~$cm508~~100 " & Lines & " keybd=50" & Chr(34) & "keybd=0~~{TAB 6}" & Chr(34) & " keybd=50~~{SPACE}~~50~~{ENTER}")
Case 1 RunTCIMG("tcimg=50~~$cm508~~100 " & Lines & " pause=250 " & Chr(34) & "keybd=0~~{TAB 5}" & Chr(34) & " keybd=50~~{SPACE}~~50" & Chr(34) & "keybd=0~~{TAB}" & Chr(34) & " keybd=50~~{SPACE}~~50~~{ENTER}")
End Select
Else
Select Case ArcMove
Case 0 RunTCIMG("tcimg=50~~$cm508~~100 " & Lines & " keybd=50~~{ENTER}")
Case 1 RunTCIMG("tcimg=50~~$cm508~~100 " & Lines & " pause=250 " & Chr(34) & "keybd=0~~{TAB 4}" & Chr(34) & " keybd=50~~{SPACE}~~50~~{ENTER}")
End Select
End If
WScript.Quit
Sub RunTCIMG(Cmd) CreateObject("WScript.Shell").Exec(TCIMG & Chr(32) & Cmd) End Sub
'================================================================Сообщение отредактировал LonerD 26 августа 2012 - 19:5226 августа 2012 - 19:30 / #149 -
'Копирование или перемещение списка каталогов и файлов в создаваемый каталог с именем файла или каталога под курсором.'================================================================
' Копирование или перемещение списка каталогов и файлов
' в создаваемый каталог с именем файла или каталога под курсором.
' Если каталог с таким именем уже существуют, то
' создаваемому каталогу присваивается счётчик _0N
'================================================================
' Параметры:
' 1-й: список файлов
' 2-й: путь копирования или перемещения
' 3-й: "имя каталога", в который копируются или перемещаются объекты
' 4-й: {0 - копировать, 1 - перемещать}
' 5-й: {0 - не обрабатывать каталоги, 1 - обрабатывать}
' Параметры 3-5 необязательные, если опущены, то равны соответственно "DreamLair" 0 0
'================================================================
' Примеры:
' %L %p - копирование выделенных файлов в каталог "DreamLair" в текущей панели
' %L %t "%O" 1 1 - перемещение выделенных файлов и каталогов
' в каталог с именем под курсором в соседней панели
' %P%N %t "Folder" 0 0 - копирование всех файлов из файл списка
' под курсором в соседнюю панель в "Folder"
' "%%commander_path%%\Files\Lists\MarkerList.txt" %t "Folder" 0 1
' - копирование всех файлов и каталогов из списка
' в соседнюю панель в каталог Folder
' (%P%N %t - помогает для копирования музыки из M3U-листа)
'================================================================
' Script: CopyFilesToFolderDL.vbs
' Author: LonerD & Andrey Averin & Batya
' Build: 2.0 (2012.08.12)
'================================================================
With WScript
Cnt = .Arguments.Count
If Cnt < 3 Then .Quit
FF = CreateObject("WScript.Shell").ExpandEnvironmentStrings(.Arguments(0))
Path = CreateObject("Shell.Application").NameSpace(.Arguments(1)).Self.Path & "\"
If Cnt > 2 Then Name = .Arguments(2) : Else Name = "DreamLair" : End If
If Cnt > 3 Then CopMov = .Arguments(3) : Else CopMov = 0 : End If
If Cnt > 4 Then FolderWork = .Arguments(4) : Else FolderWork = 0 : End If
End With
If Len(Name) = 0 Then Name = "DreamLair"
If Right(Name, 1) = "\" Then Name = Mid(Name, 1, Len(Name) - 1)
FPath = Path & Name
With CreateObject("Scripting.FileSystemObject")
Do While .FolderExists(FPath)
i = i + 1 : FPath = Path & Name & Numer(i)
Loop
.CreateFolder(FPath)
Set ListFile = .OpenTextFile(FF, 1)
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
If .FileExists(SelFile) Then
FName = .GetFileName(SelFile)
Do While .FileExists(FPath & "\" & FName)
i = i + 1 : FName = Name & Numer(i)
Loop
Select Case CopMov
Case 0 .CopyFile SelFile, FPath & "\" & FName
Case 1 .MoveFile SelFile, FPath & "\" & FName
End Select
End if
If .FolderExists(SelFile) and FolderWork = 1 Then
If Right(SelFile, 1) = "\" Then SelFile = Mid(SelFile, 1, Len(SelFile) - 1)
FName = .GetFileName(SelFile)
Do While .FolderExists(FPath & "\" & FName)
i = i + 1 : FName = Name & Numer(i)
Loop
Select Case CopMov
Case 0 .CopyFolder SelFile, FPath & "\" & FName
Case 1 .CopyFolder SelFile, FPath & "\" & FName : .GetFolder(SelFile).Delete
End Select
End if
Loop
End With
ListFile.Close : Set ListFile = Nothing : WScript.Quit
Function Numer(ii) : Numer = "_" & (ii Mod 100)\10 & (ii Mod 10) : End FunctionСообщение отредактировал LonerD 29 августа 2012 - 11:3426 августа 2012 - 19:52 / #150
Статистика форума, пользователей онлайн: 0 (за последние 30 минут)
---
- Создано тем
- 107
- Всего сообщений
- 4048
- Пользователей
- 99000
- Новый участник
- termojader
Powered by Bullet Energy Forum



