Настройка временного промежутка при поиске файлов по дате

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

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

Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Настройка временного промежутка при поиске файлов по дате

Сообщение Kokkolar »

Левое окно даты по дефолту показывает текущее время, в правом же окне время автоматом выставляется на 23:59:59.

http://s25.postimg.org/gq62j1m67/TCMD_04.png

Требуется чтобы в левой ячейке время было текущем (текущИм?), но с нулевыми секундами, то есть если даже время 21:21:55, то оно бы выглядело как 21:21:00.

От правой ячейки требуется выставлять время ровно на 2 минуты старше чем в левой, то есть:

левая: 21:21:00
правая: 21:23:00

Можно ли организовать такое просто средствами настройки конфига TC? Хотя бы с правой колонкой разобраться, а то уж совсем не в тему там время выставляется.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Kokkolar
Для экономии времени прежде всего процитирую фрагмент из нашей с CaptainFlint книги по TC.
Опция Дата между (Date between) активизирует два поля, позволяющие указать период времени, когда в последний раз файл был изменен. Можно заполнить только одно из полей (если это первое поле, поиск ведется в диапазоне между указанной датой и текущей, а если второе, — то по указанную дату включительно) или оба поля сразу (тогда обе даты включаются в диапазон поиска). По умолчанию первое поле пустое, во второе автоматически подставляется текущая дата.
Вы можете указать в этих полях не только дату, но и время изменения файла, надо только отделить заданное время от даты пробелом (например, 10.07.08 10:30).
На момент написания книги дочерних диалогов для вставки даты/времени ещё не было, всё делалось вручную. Но в любом случае опция была предназначена в первую очередь для указания диапазона по датам. (Указание диапазона по времени, но в пределах одной даты — далеко не самый частый случай такого поиска, а с указанными в предыдущем посте условиями — и вовсе экзотический.) Нет ничего удивительного, что при использовании дочернего диалога по умолчанию во второе поле всегда подставляется максимально возможное для данной даты время, то есть 23:59:59. (Оно же берётся, если в поле используется дата без времени.) А в первом поле, если мы хотим его заполнить текущими датой/временем, они предлагаютcя, разумеется, с фактическим числом секунд. Откуда и с чего в каком-то из этих полей могли бы принудительно взяться нули секунд, я решительно не понимаю.
Никаких настроек для изменения этого поведения не существует. И, как было сказано, всё там выставляется весьма в тему.
А если вам хочется искать файлы в произвольном диапазоне, исправьте нужные цифры ручками. И, конечно, никакого текущего времени в диапазоне в этом случае ни с какой стороны не будет. Близко — но не то.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Скрипт с использованием утилиты TCFS2:

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

'============================================
' Описание: Поиск файлов в интервале 2 минут
' Требования: Необходима утилита TCFS2 
'============================================
  NOW1 = NOW
  NOW2 = dateadd("n",2,NOW1)
  WScript.CreateObject("WScript.Shell").Exec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" _
  & " /ef ""tcm(501,1) eval(send_wait(`~(^{TAB}{TAB} " _
  & Right("0" & Day(NOW1), 2) & "." & Right("0" & Month(NOW1), 2) & "." & Year(NOW1) _
  & " " & Right("0" & Hour(NOW1), 2) & ":" & Right("0" & Minute(NOW1), 2) & ":" & "00" _
  & "{TAB 2}" & Right("0" & Day(NOW2), 2) & "." & Right("0" & Month(NOW2), 2) & "." & Year(NOW2) _
  & " " & Right("0" & Hour(NOW2), 2) & ":" & Right("0" & Minute(NOW2), 2) & ":" & "00" _
  & "^+{TAB}{TAB})`, findwnd(`TFindFile`)))"""
Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Сообщение Kokkolar »

Скрипт для PowerPro, который использует TCFS2 - я правильно понял?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Kokkolar
Нет, PP тут совсем не пахнет, это vbs.
P.S.: А вообще на будущее лучше запомнить, что если тут не указывают язык, то по умолчанию будет VBScript.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Kokkolar
Нужно создать файл *.vbs (например, %COMMANDER_PATH%\VBS\Поиск в интервале 2 минут.vbs) с приведённым кодом, скачать и положить утилиту TCFS2 (вместе с ini-файлом) в папку %COMMANDER_PATH%\Utils\TCFS2. Утилита отправляет ТК указание выполнить внутреннюю команду cm_SearchFor (501) и эмулирует нажатия клавиш в диалоге поиска для установки интервала, который определяется в скрипте. Поиск можно вызывать кнопкой:

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

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\VBS\Поиск в интервале 2 минут.vbs"

wcmicons.dll,47
Поиск в интервале 2 минут


-1
Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Сообщение Kokkolar »

Создал такую кнопку, но при нажатии она просто открывает поисковое окно, параметры поиска такие же как и при открытии поиска без скрипта.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Kokkolar
На вкладке "Дополнительно" диалога поиска файлов при этом тоже ничего не меняется?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Я бы немного подсократил скрипт:

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

'===================================================
' Описание: поиск файлов в интервале 2 будущих минут
'============== Путь к утилите TCFS2 ===============
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'===================================================
NOW1 = NOW : NOW2 = dateadd("n", 2, NOW1)
WScript.CreateObject("WScript.Shell").Run TCFS2 &_
" /ef ""tcm(501,1) eval(send_wait(`~(^{TAB}{TAB} " & Redate(NOW1) & _
"{TAB 2}" & Redate(NOW2) & "^+{TAB}{TAB})`, findwnd(`TFindFile`)))"""
Function Redate(NOWX)
  Redate = Right("0" & Day(NOWX), 2) & "." & Right("0" & Month(NOWX),  2) & "." &_
  Year(NOWX) & " " & Right("0" & Hour(NOWX), 2) & ":" & Right("0" & Minute(NOWX), 2) & ":00"
End Function
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Сообщение Kokkolar »

sa
Там все пусто, как при обычном вызове поиска. То есть даже галочка поиска по дате не стоит.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Kokkolar
Странно. Проверял и на XP и на семёрке.
Меня в подобных случаях иногда выручала небольшая пауза delay(200) после вызова внутренней команды ТК. Можно попробовать ввести её в скрипте после tcm(501,1), перед eval. В качестве разделителя использовать пробелы.
Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Сообщение Kokkolar »

Сделал в винде ассоциацию Notepad++ с файлами типа *.vbs, так теперь по созданной в TC кнопке он мне тупо этот скрипт в Notepad++ открывает, соответственно даже выполнить его не пытается.

Важно ли с какой прогой ассоциировать файлы *.vbs в самой винде?

Или может я некорректно кнопку создал?
http://s25.postimg.org/l5u1sbybj/knopka.png
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Чтобы не зависеть от ассоциации, прописывай запуск интерпретатора с путем к скрипту:

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

C:\Windows\System32\wscript.exe "%COMMANDER_PATH%\VBS\Finder.vbs"
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Kokkolar
VBS может работать как исполняемый файл, для него вообще не следовало прописывать такие ассоциации. Notepad++ можно было ассоциировать с просмотром этого типа файлов или с правкой по F4.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Kokkolar
Сообщения: 19
Зарегистрирован: Вт июл 19, 2011 06:01

Сообщение Kokkolar »

После вставки delay(200), результат вот такой вот:
http://s25.postimg.org/4w3vpfnnj/tcmd_05.png
Ответить