Forfiles
versão que você usa não é um comando nativo do XP. É uma versão mais antiga do utilitário, que foi originalmente distribuído com um dos W2K Resource Kits
(acho que vai mesmo para o NT Resource kit, embora eu não tenho certeza). Não há nada de errado em usar isso no XP, mas se você olhar de perto a sua sintaxe, ele diz (ênfase minha):
-d[+|-][DDMMYY|DD] Select files with date >= or <=DDMMYY (UTC) or files having date >= or <= (current date - DD days)
Anote UTC na descrição. Isso significa que (1.1) forfiles
usa registros de data e hora diferentes que você acha que faz - a menos que a hora do sistema seja UTC (sem deslocamento), sem horário de verão.
Isso provavelmente será mais fácil com um exemplo. Sou UTC + 1, horário de verão.
(data de hoje - 2012-09-19)
- Crie um arquivo e faça um dir:
2012-09-19 00:14 5 zzz_utc.txt
tem data de hoje, por isso não deve ser selecionado por forfiles, vamos verificar:
FORFILES -pc:\temp -mzzz_utc.* -d-1 -c"CMD /C Echo @FILE"
zzz_utc.txt
Mas ele é selecionado! Por quê? Vamos ver os tempos UTC do arquivo (o seguinte comando é executado no powershell):
ls .\zzz_utc.txt |select LastAccessTime,LastAccessTimeUTC
LastAccessTime LastAccessTimeUtc
-------------- -----------------
2012-09-19 00:15:11 2012-09-18 22:15:11
Como você pode ver, TimeUtc - o usado por (1.1) forfiles
é de ontem! É por isso que ele é selecionado pela ferramenta.