Procure arquivos após uma data relativa usando a pesquisa do Windows

8

Estou procurando uma maneira de salvar uma pesquisa que inclua uma data relativa. Especificamente, estou procurando uma maneira de salvar uma pesquisa que corresponda a arquivos que tenham uma data de modificação há 7 dias .

Eu li o documento da sintaxe de consulta avançada do Windows Search e não vejo uma maneira de dizer isso há 7 dias.

A seção de números e intervalos menciona que datas relativas são possíveis. O problema é que as datas relativas descritas lá não se enquadram nos critérios de que preciso. A última semana quase se parece com o que eu quero, exceto se eu executar uma consulta como after:lastweekna segunda-feira, ela mostrará apenas meu arquivo que foi modificado desde domingo às 12:00. A última semana / último mês parece relativa ao início da semana / mês, o que não é o que eu preciso.

Datas relativas de várias palavras: semana, próximo mês, última semana, mês passado ou ano seguinte. Os valores também podem ser inseridos contratados, da seguinte forma: thisweek, nextmonth, lastweek, pastmonth, comingyear.

Uma coisa legal das pesquisas salvas é que elas são armazenadas como um documento XML e o formato do arquivo é documentado . Não estou vendo como formar um valor correto para um datetime. Se eu conseguia entender esse formato, suspeito que poderia usar um editor de texto e criei uma pesquisa salva que faça o que eu quero.

Fragmento dos exemplos :

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

Para resumir, estou procurando uma resposta para uma ou ambas as perguntas

  • Como faço uma consulta por '7 dias atrás' usando a sintaxe padrão?
  • Como o DateTime é armazenado em uma pesquisa salva?
Zoredache
fonte

Respostas:

7

Para a primeira parte da sua pergunta: R00UUUUUUUUZZXD-30NUdiz ao Windows para pesquisar nos últimos 30 dias. Alterar 30 para 1 (ou seja, R00UUUUUUUUZZXD-1NU) tornaria a pesquisa nas últimas 24 horas.

No seu caso, você deseja definir o valor como R00UUUUUUUUZZXD-7NU. Consulte esta postagem no fórum. 🕗

Para a segunda parte da sua pergunta, talvez comece examinando a System.DateModifieddocumentação. O outro tipo mencionado System.StructuredQueryType.DateTime, não consigo encontrar documentação.

Atualizar:

Encontrei essa gema 🕗 que nos aproxima de decifrar como construir os DateTimevalores relativos . Considere esta citação:

Por exemplo, a Consulta Estruturada suporta expressões de data / hora relativas, que permanecem sem solução até serem aplicadas a algum horário de referência. Em um nó folha com o tipo semântico System.StructuredQueryType.DateTime, o valor pode ser um VT_FILETIME ou um VT_LPWSTR. VT_FILETIME é uma data / hora absoluta, portanto já foi resolvida. VT_LPWSTR é uma representação de seqüência de caracteres de uma expressão de data / hora relativa. O horário de referência especificado deve ser um horário local, mas os horários resolvidos na expressão de consulta resultante serão em horário universal coordenado (UTC).

e, finalmente, esta postagem no fórum tem outro exemplo do que DateTimeestá armazenado.

O melhor que posso dizer é um formato relativo de data / hora. Ainda não consigo encontrar nenhuma documentação rígida.

mindless.panda
fonte
+1. Bom trabalho desenterrar o significado de "R00UUUUUUUUZZXX-30NU".
Peter Mortensen
1

Basta escrever um script (PowerShell ou Lote) que leve a data de hoje, subtraia 7 dias e execute uma pesquisa com base no resultado. Dessa forma, você não precisará salvar a pesquisa, basta executar o script.

Travelling Tech Guy
fonte
Embora eu concorde, isso é possível. Esta realmente não é a solução que estou procurando. Além disso, alguém deve saber como o valor de data e hora está estruturado.
precisa
0

Criei um arquivo de pesquisa de amostra para recriar programaticamente. Pesquisei arquivos de vídeo em uma pasta especificada, modificada nas últimas 2 semanas ("desatodificado: 17/03/2017 .. 04/01/2017").

Isso me deu um arquivo .search-ms cheio de coisas como:

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

A chave aqui sendo

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

Você pode observar que as datas estão claramente escritas, anexadas pela letra K. N00, depois K, depois o ano e assim por diante.

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

Eu escrevi um aplicativo de console simples para gerar um arquivo de pesquisa com as datas específicas das últimas 2 semanas e configurei o Windows Task Scheduler para executá-lo todos os dias à meia-noite para meus próprios fins. Tenho certeza que você poderia fazer o mesmo.

Concordo que o método de solução alternativa não substitui a capacidade de gerar o arquivo de pesquisa. Uma coisa que as pessoas talvez não saibam é que você pode tratar os arquivos .search-ms como pastas, chegando a incluí-los como uma pasta da barra de ferramentas na barra de tarefas.

Stabby
fonte