Andrey_A писал(а):Я пользуюсь таким скриптом, может поможет, если необходимо подправьте под себя
Спасибо, вот так скрипт, буду тестить.
Flasher писал(а):Прописать %N в параметрах.
Для новой кнопки не забыть очистить путь запуска
Все сделал работает, но опять интересная картина- просто папки и файлы выделяет, но когда отображено все содержимое, работать не хочет, а исходный скрипт скрипте при таком режиме выделяет только каталоги, а с файлами работать не хочет- может проблема в этом ?
Andrey_A писал(а):Всвязи с проблемой Helpera (при большом к-ве файлов) использована утилита NirCmd.exe
Я долго пытался, в своё время, справится с буфером с помощью TCS, но NirCmd.exe оказалась стабильней http://www.nirsoft.net/utils/nircmd.html
скрипт немножко подправил
Andrey_A
Это, конечно, лучше обсуждать в другом месте, но, честно говоря, при использовании инструмента IE в одном месте скрипта лучше его использовать и в другом.
А касаемо утилит Tol!k уже не раз предлагал ConClip.
Откровенно, совершенно не понятно, зачем для такой простой задачи такой громоздкий код.
Flasher писал(а):В каком смысле "отображено всё содержимое"? Содержимое чего?
Поясняю - захожу в текущей катаог, в нем множество вложенных каталогов с файлами, далее поиск искать все файлы с расширением(.wmv) Далее отобразить все найденое, и вот здесь для сортировки - пытаюсь применить скрипт. На данный момент в таком режиме, а также в режиме рекурсии- работает только плагин filex, А все остальные скрипты -(относящиеся к этой теме) работают в режиме простого выделения(то-есть, срабатывают только в режиме текущей панели, без вложенности) Возможно это связанно с портабельностью totala (честно говоря- первый раз такая ерунда) Helpera -обновил, но безрезультатно. На днях, проверю на виртуальной машине, со стандартным totalom. Скорее всего дело в этом. В любом случае спасибо Всем за помощь.
shveicar
В режиме DirBranch не работает, потому что в скрипте перебираются соответствующие элементы текущего каталога, а не элементы рекурсивной серии каталогов. К тому же в этом режиме используются относительные пути, а при загрузке выделения из буфера по команде cm_LoadSelectionFromClip тип путей должен соответствовать текущему режиму. Полные пути должны быть для стандартного режима, относительнгые для режима "без подкаталогов". Т.е. тут требуется выделять все файлы, выискивать отправной каталог во всех путях, потом формировать список путей относительно этого каталога и уже потом отправлять отфильтрованный список в буфер и загружать из него выделение. Это процесс довольно много ресурсов будет кушать и глюков, соответственно, может быть ещё больше, чем в приведённых вариантах.
Спасибо Flasher - за разъяснение, но для режима (найти и отобразить все) и DirBranch - прекрасно работает плагин filex. так что придумывать что -то еще, нет смысла. Еще раз благодарю, за проделанную работу.
' Выделение группы файлов/папок в соответствии с длиной имени файла/папки под курсором
' Необходима регистрация Script Helper ActiveX for TC
' Параметр: %N
'===============================================================
On Error Resume Next
N = WScript.Arguments(0)
With CreateObject("Scripting.FileSystemObject")
Set CD = .GetFolder(CreateObject("WScript.Shell").CurrentDirectory)
If .FileExists(N) Then
For Each F in CD.Files
If Len(F.Name) = Len(N) Then A = A & vbnewline & F
Next
ElseIf .FolderExists(N) Then
For Each F in CD.SubFolders
If Len(F.Name) = Len(N) Then A = A & vbnewline & F & "\"
Next
Else MsgBox "Установите курсор на файле или папке!", vbInformation
End If
End With
With CreateObject("TCScript.Helper")
T = .GetTextFromClip
.SetTextToClip(A)
.SendCommand 2033, True
.SetTextToClip(T)
End With
Wscript.Quit
' Выделение группы файлов/папок в соответствии с длиной имени файла/папки под курсором
' Необходима регистрация Script Helper ActiveX for TC
' Параметры: %N "%P"
'===============================================================
On Error Resume Next
N = WScript.Arguments(0)
CD = WScript.Arguments(1)
If Err.Number > 0 Then
MsgBox "Установите курсор на файле или папке!", vbInformation
Err.Clear
Wscript.Quit
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
With CreateObject("TCScript.Helper")
T = .GetTextFromClip
.LockTC True
.SendCommand 524
If FSO.FileExists(N) Then .SendCommand 3302, True
If FSO.FolderExists(N) Then .SendCommand 3303, True
.SendCommand 2018, True
.SendCommand 524
For Each F in Split(.GetTextFromClip, vbnewline)
If Len(FSO.GetFileName(F)) = Len(FSO.GetFileName(N)) Then
If Len(CD) > 0 Then
A = A & vbnewline & Mid(F,Len(CD)+1)
Else A = A & vbnewline & F
End If
End If
Next
.SetTextToClip(A)
.LockTC False
.SendCommand 2033, True
.SetTextToClip(T)
End With
Set FSO = Nothing
Wscript.Quit
Предыдущий вариант не заменяю, т.к. тот срабатывает побыстрее.
Flasher писал(а):Предыдущий вариант не заменяю, т.к. тот срабатывает побыстрее
Так ведь дело, не в скорости, а в функциональности! Да и потом, Я особой разницы, в скорости не заметил. Такой скрипт, может занять почётное место в коллекции инструментов Total Commander!