Пошук файлів після відносної дати за допомогою пошуку в Windows


8

Я шукаю спосіб збереження пошуку, який включає відносну дату. Зокрема, я шукаю спосіб збереження пошуку, який відповідає файлам, які мають дату модифікації 7 днів тому .

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

У розділі цифр та діапазонів вказується, що можливі відносні дати. Проблема полягає в тому, що описані там відносні дати не відповідають необхідним мені критеріям. Останній тиждень майже схожий на те, що я хочу, за винятком випадків, коли я запускаю запит, як after:lastweekу понеділок, він покаже лише мій файл, який було змінено з неділі о 12:00. Останній тиждень / останній місяць, схоже, відносно початку тижня / місяця, а це не те, що мені потрібно.

Відносні дати у кількох словах: тиждень, наступний місяць, минулий тиждень, минулий місяць або рік, що настає. Значення також можна вводити за контрактом, таким чином: thisweek, nextmonth, lastweek, lastmonth, nextyear.

Одним із приємних речей щодо збережених пошукових запитів є те, що вони зберігаються у вигляді 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значень. Розглянемо цю цитату:

Наприклад, Структурований запит підтримує відносні вирази дати / часу, які залишаються невирішеними, поки вони не будуть застосовані до певного еталонного часу. У аркуші аркуша з семантичним типом System.StructuredQueryType.DateTime значення може бути або VT_FILETIME, або VT_LPWSTR. VT_FILETIME - це абсолютна дата / час, тому вона вже вирішена. VT_LPWSTR - це рядкове подання відносного вираження дати / часу. Зазначений опорний час повинен бути локальним часом, але вирішені часи в отриманому виразі запиту будуть у загально координованому загальному часі (UTC).

і, нарешті, ця публікація на форумі має ще один приклад того, що DateTimeзберігається.

Найкраще, що я можу сказати, це відносний формат дати / часу. Я досі не можу знайти жодної важкої документації на це.


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

1

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


Хоча я згоден, це можливо обійти. Це дійсно не рішення, яке я шукаю. Крім того, хтось повинен знати, як структурується значення дати.
Зоредаче

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"

Ви можете помітити, що дати чітко записуються, попередньо письмом К. N00, потім K, потім року тощо.

N00 K[year]K[month]K[day]UUUUUZZNNU

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.