Tente o seguinte:
Get-ChildItem |
Where-Object {
[datetime]::ParseExact($_.BaseName, "yyyyMMddHHmmss", $null) -gt (Get-Date).AddMinutes(-5)
} |
Move-Item -Destination C:\Path\to\target_dir
Eu divido o código em várias linhas para facilitar a leitura, mas é claro que você pode transformá-lo em uma linha única e até encurtar um pouco usando Aliases do PowerShell .
Explicação
-
Get-ChildItemretorna uma lista de todos os arquivos no diretório atual. Nota: ele também retorna subdiretórios, mas este código supõe que você tenha apenas arquivos lá. Os resultados são canalizados (|) para o próximo comando. -
Where-Objectpercorre os resultados do comando anterior e retorna apenas aqueles que correspondem ao critérios especificados.$_representa o arquivo atual de cada iteração e a propriedade.BaseNameretorna o nome do arquivo sans extension. -
A função
[datetime]::ParseExact()usa uma string e um formato de data e converte em um objeto datetime. -
Get-Dateretorna a data e a hora atuais. A funçãoAddMinutes()deduz 5 minutos da hora atual. -
Os arquivos retornados por
Where-Object, então, são aqueles em que a data e a hora representadas no nome do arquivo não são mais do que 5 minutos mais antigos que a hora atual. -
Por fim,
Move-Itemmove os arquivos correspondentes para o diretório especificado.