Cerca i file dopo una data relativa usando la ricerca di Windows


8

Sto cercando un modo per salvare una ricerca che includa una data relativa. In particolare, sto cercando un modo per salvare una ricerca che corrisponda ai file con una data di modifica di 7 giorni fa .

Ho letto il documento Sintassi delle query avanzate di Ricerca di Windows e non vedo un modo per dirlo 7 giorni fa.

La sezione numeri e intervalli indica che sono possibili date relative. Il problema è che le date relative ivi descritte non corrispondono ai criteri di cui ho bisogno. L' ultima settimana sembra quasi quello che voglio tranne che se eseguo una query come after:lastweekun lunedì mostrerà solo il mio file che è stato modificato da domenica alle 12:00. L'ultima settimana / lastmonth sembrano relativi all'inizio della settimana / mese che non è ciò di cui ho bisogno.

Date relative a più parole: settimana, mese successivo, settimana scorsa, mese scorso o anno successivo. I valori possono anche essere inseriti come contrattati, come segue: thisweek, nextmonth, lastweek, pastmonth, comingyear.

Una cosa bella delle ricerche salvate è che sono archiviate come documento XML e il formato del file è documentato . Non vedo come formare un valore corretto per un datetime. Se fossi in grado di capire questo formato, sospetto di poter usare un editor di testo e creare una ricerca salvata che fa quello che voglio.

Frammento dagli esempi :

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

Per riassumere, sto cercando una risposta a una o entrambe queste domande

  • Come si effettua una query per "7 giorni fa" utilizzando la sintassi standard?
  • Come viene archiviato il DateTime in una ricerca salvata?

Risposte:


7

Per la prima parte della domanda: R00UUUUUUUUZZXD-30NUindica a Windows di cercare negli ultimi 30 giorni. Se si cambia da 30 a 1 (ad es. R00UUUUUUUUZZXD-1NU) , Si cercherà di cercare nelle ultime 24 ore.

Nel tuo caso stai cercando di impostare il valore su R00UUUUUUUUZZXD-7NU. Fai riferimento a questo post del forum. 🕗

Per la seconda parte della tua domanda forse inizia guardando la System.DateModifieddocumentazione. L'altro tipo menzionato System.StructuredQueryType.DateTime, non riesco a trovare la documentazione.

Aggiornare:

Ho trovato questa gemma 🕗 che ci avvicina alla decifrazione di come costruire i DateTimevalori relativi . Considera questa citazione:

Ad esempio, Structured Query supporta espressioni di data / ora relative, che rimangono irrisolte fino a quando non vengono applicate a un certo tempo di riferimento. In un nodo foglia con tipo semantico System.StructuredQueryType.DateTime, il valore può essere VT_FILETIME o VT_LPWSTR. VT_FILETIME è una data / ora assoluta, quindi è già stata risolta. VT_LPWSTR è una rappresentazione in formato stringa di un'espressione data / ora relativa. Il tempo di riferimento specificato dovrebbe essere un orario locale, ma i tempi risolti nell'espressione di query risultante saranno in tempo universale coordinato (UTC).

e infine questo post sul forum ha un altro esempio di ciò che DateTimeè memorizzato.

Il meglio che posso dire è un formato data / ora relativo. Non riesco ancora a trovare alcuna documentazione su di esso.


+1. Bel lavoro di ricerca del significato di "R00UUUUUUUUZZXD-30NU".
Peter Mortensen,

1

Basta scrivere uno script (PowerShell o Batch) che richiede la data odierna, sottrae 7 giorni ed esegue una ricerca in base al risultato. In questo modo, non dovrai salvare la ricerca, basta eseguire lo script.


Mentre sono d'accordo questo è possibile aggirare. Questa non è davvero la soluzione che sto cercando. Inoltre, qualcuno dovrebbe sapere come è strutturato il valore datetime.
Zoredache,

0

Ho creato un file di ricerca di esempio da ricreare a livello di codice. Ho cercato i file video in una cartella specificata, modificata nelle ultime 2 settimane ("data modificata: 3/17 / 2017..4 / 1/2017").

Questo mi ha dato un file .search-ms pieno di cose come:

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

La chiave qui è

value = "N00K 2017 K 3 K 17 UUUUUZZNNU; N00K 2017 K 4 K 1 UUUUUZZNNU"

Si può notare che le date sono chiaramente scritte, precedute dalla lettera K. N00, quindi da K, quindi dall'anno e così via.

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

Ho scritto una semplice applicazione console per generare un file di ricerca con le date specifiche delle ultime 2 settimane e impostare l'Utilità di pianificazione di Windows per eseguirlo ogni giorno a mezzanotte per i miei scopi. Sono sicuro che potresti fare lo stesso.

Sono d'accordo che il metodo di soluzione alternativa non sostituisce la possibilità di generare il file di ricerca. Una cosa che la gente potrebbe non sapere è che puoi trattare i file .search-ms come cartelle, arrivando persino a includerli come una cartella della barra degli strumenti sulla barra delle applicazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.