Busque archivos después de una fecha relativa utilizando la búsqueda de Windows

8

Estoy buscando una manera de guardar una búsqueda que incluya una fecha relativa. Específicamente, estoy buscando una manera de guardar una búsqueda que coincida con archivos que tienen una fecha de modificación que es hace 7 días .

He leído el documento de sintaxis de consulta avanzada de Windows Search y no veo una manera de decirlo hace 7 días.

La sección de números y rangos menciona que las fechas relativas son posibles. El problema es que las fechas relativas descritas allí no se ajustan a los criterios que necesito. La semana pasada casi se parece a lo que quiero, excepto que si ejecuto una consulta como after:lastweekun lunes, solo mostrará mi archivo que se ha modificado desde el domingo a las 12:00. La última semana / último mes parece estar relacionada con el inicio de la semana / mes, que no es lo que necesito.

Fechas relativas de varias palabras: semana, mes siguiente, última semana, mes pasado o año entrante. Los valores también se pueden ingresar contraídos, de la siguiente manera: esta semana, el próximo mes, la última semana, el pasado, el próximo año.

Una cosa buena de búsquedas guardadas es que se almacenan como un documento XML y el formato de archivo se documentaron . No veo cómo formar un valor correcto para una fecha y hora. Si pude entender este formato, sospecho que podría usar un editor de texto y crear una búsqueda guardada que haga lo que quiero.

Fragmento de los ejemplos :

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

Para resumir, estoy buscando una respuesta a una o ambas preguntas

  • ¿Cómo hago una consulta para 'hace 7 días' usando la sintaxis estándar?
  • ¿Cómo se almacena el DateTime en una búsqueda guardada?
Zoredache
fuente

Respuestas:

7

Para la primera parte de su pregunta: R00UUUUUUUUZZXD-30NUle dice a Windows que busque los últimos 30 días. Cambiar 30 a 1 (es decir, R00UUUUUUUUZZXD-1NU) lo haría buscar las últimas 24 horas.

En su caso, está buscando establecer el valor en R00UUUUUUUUZZXD-7NU. Consulte esta publicación del foro. 🕗

Para la segunda parte de su pregunta, tal vez comience mirando la System.DateModifieddocumentación. El otro tipo que se menciona System.StructuredQueryType.DateTime, no puedo encontrar documentación sobre.

Actualizar:

Encontré esta gema 🕗 que nos acerca a descifrar cómo construir los DateTimevalores relativos . Considere esta cita:

Por ejemplo, Structured Query admite expresiones relativas de fecha / hora, que permanecen sin resolver hasta que se aplican a algún tiempo de referencia. En un nodo hoja con tipo semántico System.StructuredQueryType.DateTime, el valor puede ser VT_FILETIME o VT_LPWSTR. VT_FILETIME es una fecha / hora absoluta, por lo que ya está resuelta. VT_LPWSTR es una representación de cadena de una expresión de fecha / hora relativa. La hora de referencia especificada debe ser una hora local, pero las horas resueltas en la expresión de consulta resultante estarán en hora universal coordinada (UTC).

y finalmente esta publicación en el foro tiene otro ejemplo de lo que DateTimese almacena.

Lo mejor que puedo decir es un formato de fecha / hora relativo. Todavía no puedo encontrar ninguna documentación en él.

mindless.panda
fuente
+1. Buen trabajo desenterrando el significado de "R00UUUUUUUUZZXD-30NU".
Peter Mortensen
1

Simplemente escriba un script (PowerShell o Batch) que tome la fecha de hoy, reste 7 días y ejecute una búsqueda basada en el resultado. De esa manera, no tendrá que guardar la búsqueda, solo ejecute el script.

Travelling Tech Guy
fuente
Si bien estoy de acuerdo, esto es posible. Esta realmente no es la solución que estoy buscando. Además, alguien debería saber cómo está estructurado el valor de fecha y hora.
Zoredache
0

Creé un archivo de búsqueda de muestra para recrear mediante programación. Busqué archivos de video en una carpeta específica, modificada en las últimas 2 semanas ("fecha modificada: 17/03/2017 ... 01/04/2017").

Esto me dio un archivo .search-ms lleno de cosas como:

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

La clave aquí es

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

Puede notar que las fechas están escritas claramente, precedidas por la letra K. N00 luego K, luego el año, y así sucesivamente.

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

Escribí una aplicación de consola simple para generar un archivo de búsqueda con las fechas específicas de las últimas 2 semanas, y configuré el Programador de tareas de Windows para ejecutarlo todos los días a la medianoche para mis propios fines. Estoy seguro de que podrías hacer lo mismo.

Estoy de acuerdo en que el método alternativo no sustituye la posibilidad de generar el archivo de búsqueda. Una cosa que la gente puede no saber es que puede tratar los archivos .search-ms como carpetas, incluso llegando a incluirlos como una carpeta de la barra de herramientas en su barra de tareas.

Stabby
fuente