Фильтр отбора с пользовательским шаблоном

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
DeathStalker
Сообщения: 331
Зарегистрирован: Пт сен 01, 2006 10:53
Откуда: Санкт-Петербург

Сообщение DeathStalker »

Проблему с раскладками можно решить если название шаблона будет только из цифр, ведь они при любой раскладке работают :wink:
Минус только в том, что название из цифр плохо передает смысл :(
Гугль - это Матрица, чем меньше его спрашивать, тем слабее будут машины во время Великой Битвы
TC10.00b6 x86 Windows 10 x64 (Windows 7 x64)
Dave
Сообщения: 24
Зарегистрирован: Вс апр 26, 2009 15:19

Сообщение Dave »

DeathStalker писал(а):Проблему с раскладками можно решить если название шаблона будет только из цифр, ведь они при любой раскладке работают :wink:
Минус только в том, что название из цифр плохо передает смысл :(
Хороший вариант, у кого проблемы с раскладками
А главное, можно имя шаблона оставить прежнее, только перед ним поставить уникальный цифровой код , к примеру шаблон
"1008 Не старше 1 часа"
А в скрипте прописать строку TCS.SendKeystroke "1008"
вместо строки TCS.SendKeystroke "Не старше 1 часа"
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Dave писал(а):На всякий случай - у меня Win XP Rus SP3, Тотal Commander 7.04a
У меня Win XP Professional SP2, Тотal Commander 7.04a. Наверное сказывается различие в ОС. Для себя проблему с раскладками решил добавлением в скрипт сочетания клавиш для переключения на русский язык (когда-то назначил в региональных стандартах на Ctrl+Shift+2) и последующего возврата на английский (Ctrl+Shift+1).
Получилось что-то вроде TCS.SendKeystroke "{TAB}^+2Файлы не старше 1 часа^+1{ENTER}". Минус такого способа - "несанкционированное" переключение языка ввода с русского на английский, но по мне это скорее плюс. Обратный эффект(переключение с английского на русский) будет, если не добавлять в конце Ctrl+Shift+1.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

sa писал(а):Минус такого способа - "несанкционированное" переключение языка ввода с русского на английский
Лучше использовать не "горячие клавиши", а функцию SetLocale:

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

currentLocale = SetLocale("ru") 'При желании можно SetLocale("en-us")
TCS.SendKeystroke "Файлы не старше 1 часа"
SetLocale(currentLocale)
Нет, я не сплю. Я просто медленно моргаю.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

В другой теме нашлось простое решение в виде кнопки, либо пользовательской команды, в которой используется команда cd с фильтром

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

cd >Файлы не старше 1 часа
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

В этой теме тоже есть скрипты обсуждаемой вами теме
http://forum.wincmd.ru/viewtopic.php?p= ... ght=#60456
Я сам пользуюсь расширенным скриптом:

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

'Пометить файлы с заданной строкой фильтра
' В параметрах прописать искомую строку
' К примеру *.doc;*.txt 
' или" >Архивы"
' вылетает окно (если 0, то помечает файлы в папке, если 1, то сначала раскрывает подпапки, а потом помечает)
Filters = WScript.Arguments(0)

Dim TCS
Set TCS = CreateObject("TCSCRIPT.Helper")

Find_String = InputBox("Введите число 1, если хотите, чтобы выделение произошло и в ПОДПАПКАХ           (по умолчанию выделение происходит только в ТЕКУЩЕЙ папке)", "Выделить по фильтру ")
If Len(Find_String) = 0 Then
   Find_String = 0
End If

If Find_String <> 0 Then
    TCS.SendCommand "cm_DirBranch"
    TCS.Pause = 2000
    TCS.SendCommand "cm_SpreadSelection"
    TCS.SendKeystroke (Filters & "{Enter}")
Else
    TCS.SendCommand "cm_SpreadSelection"
    TCS.SendKeystroke (Filters & "{Enter}")
End If

Set TCS = Nothing
Иногда хочется пометить файлы в подпапках, он его выполняет
У меня тоже была проблема с несанкционированным переключением на английский. Я стал брать название шаблона в кавычки - проблем стало меньше
>"Файлы не старше 1 часа"
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

sa писал(а):нашлось простое решение
Я имел ввиду, что это решение обходится встроенными средствами ТК - без всяких скриптов, переключений языков и т.д. и по месту занимает всего на 4 символа больше, чем само название фильтра.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

http://powerpro.wincmd.ru/Scripts/SelectFilter.htm
Работает на любых раскладках.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Кнопка с командой: cd >Файлы не старше 1 часа
Работает на любых раскладках.
Аватара пользователя
Andrey_A
Сообщения: 394
Зарегистрирован: Пт апр 10, 2009 06:28
Откуда: Сочи
Контактная информация:

Сообщение Andrey_A »

cd >Файлы не старше 1 часа
А как будет обратная строка через этот же шаблон, т.е все файлы кроме этих - все файлы кроме старше 1 часа
к примеру, если через расширения, то

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

cd *.doc;*.txt
показать все файлы с этими расширениями

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

cd *.* | *.doc;*.txt
паказать все, кроме этих
А через шаблон обратную сторону медали можно посмотреть, сколько ни старался, у меня не получилось
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Andrey_A писал(а):А как будет обратная строка через этот же шаблон, т.е все файлы кроме этих - все файлы кроме старше 1 часа
Через этот же — никак, надо новый шаблон.
Почему же, ё-моё, ты нигде не пишешь "ё"?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

CaptainFlint писал(а):никак, надо новый шаблон.
Ещё бы придумать, из чего его смастерить...
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

надо новый шаблон
Да, кстати, что-то не придумывается. Отрицательные числа вводятся, но не работают. Очевидное решение: выделить то, что моложе одного часа и обратить выделение. Но можно ли действительно сваять шаблон?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Может с плагином Age?

Нету времени сейчас экспериментировать
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Также можно использовать ScriptContentPlugin с vbs-скриптом:

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

Dim FSO 
Set FSO = CreateObject("Scripting.FileSystemObject") 
If FSO.FileExists(FileName) Then 
  content = Abs(DateDiff("h", Now, FSO.GetFile(FileName).DateLastModified)) 
Else 
  content = Abs(DateDiff("h", Now, FSO.GetFolder(FileName).DateLastModified)) 
End If 
Set FSO = Nothing
Нет, я не сплю. Я просто медленно моргаю.
Ответить