Страница 2 из 2

Добавлено: Чт дек 16, 2010 18:07
sa
Flasher писал(а):Понял. Довольно долго.
Можно написать скрипт, который просто будет “впечатывать” нужную маску, а не выискивать её, тем более, что она, возможно, уже вытолкнута из списка всего в 20 строк.

Добавлено: Чт дек 16, 2010 18:12
MVV
Жаль, встроенная команда cd не позволяет включать фильтр для папок - можно было бы кнопку создать. Например, кнопка с cd *.bak включает фильтр для *.bak, а если cd *48*\, то видимо тотал уже пытается войти в папку...

Добавлено: Чт дек 16, 2010 18:14
Flasher
sa
Такой скрипт, да ещё и с выполнением выделения, сделать - три минуты, но мы же говорим о фильтре по искомой букве при самостоятельном вводе, на большой список скриптов не напосёшься.

MVV
Как минимум три хотелки мы уже сформировали. Запостить бы их ещё на офф. :wink:

Добавлено: Пт дек 17, 2010 10:08
sa
Flasher писал(а):на большой список скриптов не напосёшься.
Можно использовать один скрипт (требуется Helper от Volniy), а фильтр передавать параметром:

Код: Выделить всё

'================================================================================
'  File:         Показ по фильтру.vbs
'  Description:  Показ файлов/каталогов по фильтру (Ctrl+F12)
'              Работает при английской раскладке клавиатуры, либо нужны
'              манипуляции с назначением клавиш для переключения на
'              английский в региональных стандартах (см. комментарии)
'  Parameters:   Параметр: фильтр показа, в том числе с использованием масок
'              (если с пробелами, то в кавычках). Пример: "*.doc;Мои рисунки"
'  Requirements: WSH Helper for TC by Volniy
'  Installation: Создайте для скрипта, например, кнопку на панели инструментов TC
'  Autor:        sa
'================================================================================
Option Explicit
If WScript.Arguments.Count < 1 Then
  MsgBox "Не задан параметр: фильтр показа!", _
    vbOKOnly + vbCritical, _
    "Показ по фильтру.vbs"
  WScript.Quit
End If
Dim TCS, S
Set TCS = CreateObject("TCScript.Helper")
S =  WScript.Arguments(0)
If InStr(1, S, " ", 1) > 0 Then
  S = chr(34) & S & chr(34)
  S = Replace (S, ";", chr(34) & ";" & chr(34),1,-1,1)
  S = Replace (S, "|", chr(34) & "|" & chr(34),1,-1,1)
End If
With TCS
  .SendCommand 314 'cm_SrcUserDef
'  .SendKeystroke "^+1"
' Раскомментировать предыдущую строку, если переключение на английский язык
'настроить в региональных стандартах на Ctrl+Shift+1. Иначе следующая команда
'SendKeystroke не будет правильно выполняться при русской раскладке клавиатуры
  .SendKeystroke S
  .SendKeystroke "{Enter}"
'  .SendKeystroke "^+2"
' Раскомментировать предыдущую строку, если переключение на русский язык
'настроено на Ctrl+Shift+2 и есть желание переключиться с английского на
'русский перед выходом из скрипта
End With
Set TCS = Nothing
Wscript.Quit
Кнопка:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\VBS\Показ по фильтру.vbs
"*.doc;Мои рисунки"
wcmicons.dll,25
Показ по фильтру

0
-1
Upd
Удалил строку для входа в историю (Alt+Down).

Добавлено: Пт дек 17, 2010 18:13
Flasher
Flasher писал(а):на большой список скриптов не напосёшься
Тут стоило откорректировать: не скриптов(файлов) как таковых, а кнопок/команд/клавиш.

Добавлено: Вс дек 19, 2010 00:42
sa
В варианте со скриптом, если создать кнопку с выпадающим меню требуемого размера, то вызов нужного фильтра делается на раз-два. В тоже время, при использовании команды cm_SrcUserDef (Ctrl+F12) требуется 4 действия. И даже для вызова шаблона (который пока невозможно создать для рассматриваемой задачи) потребовалось бы как минимум 3, а то и те же 4 действия. Так что для тех, кому эта задача актуальна, по-моему, овчинка выделки стоит.

Добавлено: Ср дек 22, 2010 12:57
sa
Удалил из скрипта строку для входа в список истории (Alt+Down): от неё больше вреда, чем пользы.
При наличии указанной строки (она располагалась перед .SendKeystroke "^+1") скрипт верно срабатывал в случае, если была нажата клавиша NumLock, а в противном случае вместо входа в список истории происходило стирание первого символа фильтра.