Procura por 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 com uma data de modificação há 7 dias .

Eu li o documento Sintaxe de Consulta Avançada da Pesquisa do Windows e estou não vejo uma maneira de dizer 7 dias atrás.

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

Multi-word relative dates: week, next month, last week, past month, or coming year. The values can also be entered contracted, as follows: thisweek, nextmonth, lastweek, pastmonth, comingyear.

Uma coisa interessante sobre pesquisas salvas é que elas são armazenadas como um documento XML e o formato do arquivo é documentado . Eu não estou vendo como formar um valor correto para um datetime. Se eu fosse capaz de entender esse formato, suspeito que poderia usar um editor de texto e criei uma pesquisa salva que faz 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 para "7 dias atrás" usando a sintaxe padrão?
  • Como o DateTime é armazenado em uma pesquisa salva?
por Zoredache 14.03.2010 / 23:26

3 respostas

6

Para a primeira parte da sua pergunta: R00UUUUUUUUZZXD-30NU diz ao Windows para pesquisar nos últimos 30 dias. Alterar de 30 para 1 faria com que ele pesquisasse nas últimas 24 horas.

No seu caso, você está tentando definir o valor para R00UUUUUUUUZZXD-7NU . Consulte esta publicação no fórum

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

Atualização:

Eu encontrei esta gema que nos aproxima da decifração de como para construir os valores relativos DateTime . Considere esta citação:

For example, Structured Query supports relative date/time expressions, which remain unresolved until they are applied to some reference time. In a leaf node with semantic type System.StructuredQueryType.DateTime, the value can be either a VT_FILETIME or a VT_LPWSTR. VT_FILETIME is an absolute date/time so it is already resolved. VT_LPWSTR is a string representation of a relative date/time expression. The specified reference time should be a local time, but the resolved times in the resulting query expression will be in coordinated universal time (UTC).

e finalmente esta postagem no fórum tem outro exemplo do que o DateTime está armazenado.

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

    
por 24.03.2010 / 23:02
1

Basta escrever um script (PowerShell ou Batch) que use 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.

    
por 15.03.2010 / 05:29
0

Eu criei um arquivo de pesquisa de amostra para recriar programaticamente. Eu procurei por arquivos de vídeo em uma pasta especificada, modificada nas últimas 2 semanas ("datemodified: 17/03 / 2017..4 / 1/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 é

valor="N00K2017K3K17UUUUUZZNNU; N00K2017K4K1UUUUUZZNNU"

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

Eu escrevi um aplicativo de console simples para gerar um arquivo de pesquisa com as datas específicas das últimas duas semanas e configurei o Agendador de Tarefas do Windows para executá-lo todos os dias à meia-noite para minhas próprias finalidades. Tenho certeza que você poderia fazer o mesmo.

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

    
por 31.03.2017 / 09:58