Rechercher des fichiers après une date relative à l'aide de la recherche Windows

8

Je cherche un moyen de sauvegarder une recherche qui inclut une date relative. Plus précisément, je recherche un moyen de sauvegarder une recherche qui correspond aux fichiers dont la date de modification est antérieure à 7 jours .

J'ai lu le document Syntaxe de requête avancée de Windows Search et je ne vois pas comment le dire il y a 7 jours.

La section des nombres et des plages indique que des dates relatives sont possibles. Le problème est que les dates relatives décrites ici ne correspondent pas aux critères dont j'ai besoin. La dernière semaine ressemble presque à ce que je veux, sauf que si je lance une requête comme after:lastweekun lundi, cela ne montre que les fichiers modifiés depuis dimanche à 12h00. La dernière semaine / le dernier mois semble être relatif au début de la semaine / du mois, ce qui n’est pas ce dont j'ai besoin.

Dates relatives multi-mots: semaine, mois prochain, semaine dernière, mois dernier ou année suivante. Les valeurs peuvent également être entrées contractées, comme suit: thisweek, nextmonth, lastweek, pastmonth, comingyear.

L'un des avantages des recherches enregistrées est qu'elles sont stockées sous forme de document XML et que le format de fichier est documenté . Je ne vois pas comment former une valeur correcte pour un datetime. Si je pouvais comprendre ce format, je suppose que je pourrais utiliser un éditeur de texte et créer une recherche enregistrée qui fait ce que je veux.

Fragment des exemples :

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

En résumé, je cherche une réponse à l’une ou l’autre de ces questions.

  • Comment faire une requête 'il y a 7 jours' en utilisant la syntaxe standard?
  • Comment le DateTime est-il stocké dans une recherche sauvegardée?
Zoredache
la source

Réponses:

7

Pour la première partie de votre question: R00UUUUUUUUZZXD-30NUindique à Windows de rechercher les 30 derniers jours. Changer 30 à 1 (c'est-à-dire R00UUUUUUUUZZXD-1NU) lui ferait rechercher les dernières 24 heures.

Dans votre cas, vous souhaitez définir la valeur R00UUUUUUUUZZXD-7NU. Référence ce post forum. 🕗

Pour la deuxième partie de votre question, commencez peut-être par regarder la System.DateModifieddocumentation. L'autre type mentionné, System.StructuredQueryType.DateTimeje ne parviens pas à trouver de documentation.

Mettre à jour:

J'ai trouvé ce joyau 🕗 qui nous rapproche de la manière de déchiffrer comment construire les DateTimevaleurs relatives . Considérez cette citation:

Par exemple, Structured Query prend en charge les expressions de date / heure relatives, qui restent non résolues jusqu'à ce qu'elles soient appliquées à une heure de référence. Dans un nœud feuille de type sémantique System.StructuredQueryType.DateTime, la valeur peut être un VT_FILETIME ou un VT_LPWSTR. VT_FILETIME est une date / heure absolue, elle est donc déjà résolue. VT_LPWSTR est une représentation sous forme de chaîne d'une expression date / heure relative. L'heure de référence spécifiée doit être une heure locale, mais les heures résolues dans l'expression de requête résultante seront exprimées en temps universel coordonné (UTC).

et enfin cette publication sur le forum a un autre exemple de ce qui DateTimeest stocké.

Le mieux que je puisse dire est un format de date / heure relative. Je ne suis toujours pas en mesure de trouver de documentation solide à ce sujet.

mindless.panda
la source
+1 Beau travail à creuser le sens de "R00UUUUUUUUUZZXD-30NU".
Peter Mortensen
1

Il suffit d'écrire un script (PowerShell ou Batch) qui prend la date du jour, soustrait 7 jours et exécute une recherche en fonction du résultat. De cette façon, vous n'aurez pas à sauvegarder la recherche, il vous suffira d'exécuter le script.

Voyageur Tech
la source
Bien que je sois d’accord, c’est un travail possible autour. Ce n'est vraiment pas la solution que je cherche. De plus, quelqu'un devrait savoir comment la valeur datetime est structurée.
Zoredache
0

J'ai créé un exemple de fichier de recherche à recréer par programme. J'ai cherché des fichiers vidéo dans un dossier spécifié, modifié au cours des 2 dernières semaines ("datemodified: 3/17 / 2017..4 / 1/2017").

Cela m'a donné un fichier .search-ms plein de choses telles que:

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

La clé étant ici

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

Vous pouvez remarquer que les dates sont clairement écrites, précédées de la lettre K. N00, puis de K, puis de l’année, et ainsi de suite.

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

J'ai écrit une application console simple pour générer un fichier de recherche avec les dates spécifiques des 2 dernières semaines et configurer le Planificateur de tâches Windows pour qu'il s'exécute tous les jours à minuit, à mes propres fins. Je suis sûr que vous pourriez faire la même chose.

Je conviens que la méthode de la solution de contournement ne remplace pas la possibilité de générer le fichier de recherche. Une chose que les gens ne savent peut-être pas, c'est que vous pouvez traiter les fichiers .search-ms comme des dossiers, allant même jusqu'à les inclure comme un dossier de barre d'outils dans votre barre des tâches.

Stabby
la source