Wyszukaj pliki po względnej dacie za pomocą wyszukiwania w systemie Windows

8

Szukam sposobu zapisania wyszukiwania zawierającego datę względną. W szczególności szukam sposobu na zapisanie wyszukiwania pasującego do plików, których data modyfikacji jest 7 dni temu .

Przeczytałem dokument Składnia kwerendy zaawansowanej wyszukiwania systemu Windows i nie widzę sposobu, aby powiedzieć 7 dni temu.

W sekcji liczb i zakresów wspomniano, że względne daty są możliwe. Problem polega na tym, że opisane tam względne daty nie pasują do kryteriów, których potrzebuję. Lastweek prawie wygląda to, co chcę z wyjątkiem jeśli uruchomić kwerendę jak after:lastweekw poniedziałek pokaże tylko mój plik, które zostały zmodyfikowane od niedzielę o 12:00. Ostatni tydzień / ostatni miesiąc wydają się odnosić do początku tygodnia / miesiąca, co nie jest tym, czego potrzebuję.

Względne daty dla wielu słów: tydzień, następny miesiąc, ostatni tydzień, ostatni miesiąc lub nadchodzący rok. Wartości mogą być również wprowadzane jako skrócone w następujący sposób: ten tydzień, następny miesiąc, ostatni tydzień, ostatni miesiąc, nadchodzący rok.

Jedną fajną rzeczą w zapisanych wyszukiwaniach jest to, że są one przechowywane jako dokument XML, a format pliku jest dokumentowany . Nie widzę, jak utworzyć poprawną wartość dla daty i godziny. Gdybym był w stanie zrozumieć ten format, podejrzewam, że mógłbym skorzystać z edytora tekstu i utworzyć zapisane wyszukiwanie, które robi to, co chcę.

Fragment z przykładów :

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

Podsumowując, szukam odpowiedzi na jedno lub oba powyższe pytania

  • Jak wykonać zapytanie „7 dni temu” przy użyciu standardowej składni?
  • Jak przechowywana jest data i godzina w zapisanym wyszukiwaniu?
Zoredache
źródło

Odpowiedzi:

7

Pierwsza część pytania: R00UUUUUUUUZZXD-30NUmówi systemowi Windows, aby przeszukał ostatnie 30 dni. Zmiana 30 na 1 (tj. R00UUUUUUUUZZXD-1NU) Sprawiłaby, że przeszukiwałbym ostatnie 24 godziny.

W twoim przypadku chcesz ustawić wartość na R00UUUUUUUUZZXD-7NU. Odwołaj się do tego postu na forum. 🕗

Drugą część pytania możesz zacząć od przejrzenia System.DateModifieddokumentacji. Drugi rodzaj, o którym wspomniano System.StructuredQueryType.DateTime, nie mogę znaleźć dokumentacji na temat.

Aktualizacja:

Znalazłem ten klejnot 🕗, który przybliża nas do rozszyfrowania sposobu konstruowania DateTimewartości względnych . Rozważ ten cytat:

Na przykład zapytanie strukturalne obsługuje względne wyrażenia daty / godziny, które pozostają nierozwiązane, dopóki nie zostaną zastosowane do określonego czasu odniesienia. W węźle liścia o typie semantycznym System.StructuredQueryType.DateTime wartością może być VT_FILETIME lub VT_LPWSTR. VT_FILETIME jest bezwzględną datą / godziną, więc została już rozwiązana. VT_LPWSTR to ciąg reprezentujący względne wyrażenie daty / godziny. Określony czas odniesienia powinien być czasem lokalnym, ale czasy rozstrzygnięte w wynikowym wyrażeniu zapytania będą w skoordynowanym czasie uniwersalnym (UTC).

i wreszcie ten post na forum zawiera kolejny przykład tego, co DateTimejest przechowywane.

Najlepsze, co mogę powiedzieć, to względny format daty / godziny. Nadal nie mogę znaleźć żadnej twardej dokumentacji na ten temat.

bezmyślna panda
źródło
+1. Dobra robota wykopująca znaczenie „R00UUUUUUUUZZXD-30NU”.
Peter Mortensen
1

Wystarczy napisać skrypt (PowerShell lub Batch), który pobiera dzisiejszą datę, odejmuje 7 dni i wykonuje wyszukiwanie na podstawie wyniku. W ten sposób nie będziesz musiał zapisywać wyszukiwania, po prostu uruchom skrypt.

Podróżujący facet techniczny
źródło
Chociaż zgadzam się, że jest to możliwe. To naprawdę nie jest rozwiązanie, którego szukam. Ponadto ktoś powinien wiedzieć, jak zorganizowana jest wartość daty / godziny.
Zoredache,
0

Utworzyłem przykładowy plik wyszukiwania do odtworzenia programowego. Szukałem plików wideo w określonym folderze, zmodyfikowanym w ciągu ostatnich 2 tygodni („Zmodyfikowany: 3/17 / 2017..4 / 1/2017”).

To dało mi plik .search-ms pełen takich rzeczy jak:

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

Kluczem jest tutaj

wartość = „N00K 2017 K 3 K 17 UUUUUZZNNU; N00K 2017 K 4 K 1 UUUUUZZNNU”

Można zauważyć, że daty są wyraźnie zapisane, poprzedzone literą K. N00, następnie K, a następnie rok i tak dalej.

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

Napisałem prostą aplikację konsolową do generowania pliku wyszukiwania z konkretnymi datami w ciągu ostatnich 2 tygodni i skonfigurowałem Harmonogram zadań systemu Windows, aby uruchamiał go codziennie o północy do własnych celów. Jestem pewien, że możesz zrobić to samo.

Zgadzam się, że metoda obejścia problemu nie zastępuje możliwości wygenerowania pliku wyszukiwania. Jedną rzeczą, o której ludzie mogą nie wiedzieć, jest to, że możesz traktować pliki .search-ms jako foldery, a nawet umieszczać je jako folder paska narzędzi na pasku zadań.

Stabby
źródło