Поиск файлов после относительной даты с помощью поиска Windows


8

Я ищу способ сохранить поиск, который включает относительную дату. В частности, я ищу способ сохранить поиск, который соответствует файлам с датой изменения, которая 7 дней назад .

Я прочитал документ синтаксиса расширенного запроса Windows Search и не вижу способа сказать это 7 дней назад.

Раздел чисел и диапазонов упоминает, что относительные даты возможны. Проблема в том, что относительные даты, описанные там, не соответствуют критериям, которые мне нужны. Lastweek выглядит почти как то , что я хочу , за исключением , если я выполнить запрос , как after:lastweekв понедельник он будет показывать только мой файл , которые были изменены с воскресенья в 12:00. Lastweek / lastmonth, кажется, относятся к началу недели / месяца, а это не то, что мне нужно.

Относительные даты, состоящие из нескольких слов: неделя, следующий месяц, последняя неделя, прошедший месяц или наступающий год. Значения также могут быть введены по контракту следующим образом: thisweek, nextmonth, lastweek, pastmonth, ближайшие год.

Одна из приятных особенностей сохраненных поисков заключается в том, что они хранятся в виде XML-документа, а формат файла задокументирован . Я не вижу, как сформировать правильное значение для даты и времени. Если бы я смог понять этот формат, я подозреваю, что мог бы использовать текстовый редактор и создать сохраненный поиск, который делает то, что я хочу.

Фрагмент из примеров :

<conditions>
  <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime"
             property="System.DateModified" operator="imp" 
             value="R00UUUUUUUUZZXD-30NU" propertyType="wstr" />
</conditions>

Подводя итог, я ищу ответ на один или оба из этих вопросов

  • Как сделать запрос на «7 дней назад» с использованием стандартного синтаксиса?
  • Как DateTime хранится в сохраненном поиске?

Ответы:


7

Для первой части вашего вопроса: R00UUUUUUUUZZXD-30NUговорит Windows, чтобы искать последние 30 дней. Изменение 30 на 1 (т. Е. R00UUUUUUUUZZXD-1NU) Приведет к поиску за последние 24 часа.

В вашем случае вы хотите установить значение R00UUUUUUUUZZXD-7NU. Ссылка на этот пост на форуме. 🕗

Для второй части вашего вопроса, возможно, начните с просмотра System.DateModifiedдокументации. Другой тип, который упоминается, System.StructuredQueryType.DateTimeя не могу найти документацию по.

Обновить:

Я нашел этот драгоценный камень 🕗 , который получает нас ближе к расшифровке , как построить относительные DateTimeзначения. Рассмотрим эту цитату:

Например, Structured Query поддерживает относительные выражения даты / времени, которые остаются неразрешенными, пока они не будут применены к некоторым эталонным времени. В листовом узле с семантическим типом System.StructuredQueryType.DateTime значение может быть либо VT_FILETIME, либо VT_LPWSTR. VT_FILETIME - это абсолютная дата / время, поэтому оно уже разрешено. VT_LPWSTR является строковым представлением относительного выражения даты / времени. Указанное эталонное время должно быть местным временем, но разрешенное время в результирующем выражении запроса будет соответствовать всемирному координированному времени (UTC).

и, наконец, эта публикация на форуме имеет еще один пример того, что DateTimeхранится.

Лучшее, что я могу сказать, это относительный формат даты / времени. Я до сих пор не могу найти какую-либо жесткую документацию по нему.


+1. Хорошая работа, выкапывая значение "R00UUUUUUUUZZXD-30NU".
Питер Мортенсен

1

Просто напишите скрипт (PowerShell или Batch), который принимает сегодняшнюю дату, вычитает 7 дней и выполняет поиск на основе результата. Таким образом, вам не нужно будет сохранять результаты поиска, просто запустите скрипт.


Хотя я согласен, что это возможно обойти. Это действительно не то решение, которое я ищу. Кроме того, кто-то должен знать, как структурировано значение datetime.
Зоредаче

0

Я создал образец файла поиска для воссоздания программно. Я искал видеофайлы в указанной папке, измененные за последние 2 недели («дата изменения: 3/17 / 2017..4 / 1/2017»).

Это дало мне файл .search-ms, полный таких вещей, как:

<condition type="leafCondition" property="System.DateModified" operator="imp" propertyType="stringarray" value="N00K2017K3K17UUUUUZZNNU; N00K2017K4K1UUUUUZZNNU" valuetype="System.StructuredQueryType.DateTime" localeName="en-US">

Ключ здесь берем

значение = "N00K 2017 K 3 K 17 UUUUUZZNNU; N00K 2017 K 4 K 1 UUUUUZZNNU"

Вы можете заметить, что даты написаны четко, с добавлением буквы K. N00, затем K, затем год и так далее.

N00 K[year]K[month]K[day]УУУУУЗЗННУ

Я написал простое консольное приложение для создания файла поиска с конкретными датами в течение последних 2 недель и настроил планировщик задач Windows, чтобы он запускался каждый день в полночь для моих собственных целей. Я уверен, что вы могли бы сделать то же самое.

Я согласен, что метод обхода не может заменить возможность создания файла поиска. Люди могут не знать, что вы можете обращаться с файлами .search-ms как с папками, даже если вы включите их в качестве панели инструментов на панели задач.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.