Você está executando um novo cmd para cada arquivo que é extremamente caro. Isso não é novidade :
There are some disadvantages to using CMD.exe with FORFILES, a new process will be created and destroyed for every file that FORFILES processes, so if you loop through 1000 files, then 1000 copies of CMD.exe will be opened and closed, this will affect performance.
Em contraste, utilitários de tamanho como o TreeSize foram otimizados para velocidade :
TreeSize Free works on the MFT (Master File Table) and reaches extremely high scan speeds. Scanning operations run in a thread, so you will see results almost instantly while TreeSize Free is working in the background.
Você pode fazer melhor não chamando mais executáveis. O PowerShell é ótimo nisso, mesmo no meu nível de novato:
Get-ChildItem D:\path\ -recurse |
Where-Object {$_.CreationTime -and $_.CreationTime -lt "2/21/2017" } |
Select-Object FullName, LastWriteTime |
Export-Csv myfile.csv
O formato de saída desejado e o outro arquivo são um exercício para o leitor.