Why bother with DIR.
Remove that from you requirement and XCOPY should meet your need.
Try :-
xcopy *.* %TEMP% /L /F /S
Without the /S (avoiding 80,000 files in C:\) I get :-
C:\Users\Alan>xcopy *.* %TEMP% /L /F
C:\Users\Alan\dotnetfolder.txt -> C:\Users\Alan\AppData\Local\Temp\dotnetfolder.txt
C:\Users\Alan\en_res.dll -> C:\Users\Alan\AppData\Local\Temp\en_res.dll
C:\Users\Alan\es_res.dll -> C:\Users\Alan\AppData\Local\Temp\es_res.dll
C:\Users\Alan\fr_res.dll -> C:\Users\Alan\AppData\Local\Temp\fr_res.dll
C:\Users\Alan\grm_res.dll -> C:\Users\Alan\AppData\Local\Temp\grm_res.dll
C:\Users\Alan\it_res.dll -> C:\Users\Alan\AppData\Local\Temp\it_res.dll
C:\Users\Alan\jp_res.dll -> C:\Users\Alan\AppData\Local\Temp\jp_res.dll
C:\Users\Alan\mfc80u.dll -> C:\Users\Alan\AppData\Local\Temp\mfc80u.dll
C:\Users\Alan\Microsoft.VC80.CRT.manifest -> C:\Users\Alan\AppData\Local\Temp\Microsoft.VC80.CRT.manifest
C:\Users\Alan\Microsoft.VC80.MFC.manifest -> C:\Users\Alan\AppData\Local\Temp\Microsoft.VC80.MFC.manifest
C:\Users\Alan\msvcr80.dll -> C:\Users\Alan\AppData\Local\Temp\msvcr80.dll
C:\Users\Alan\PCPE Setup.exe -> C:\Users\Alan\AppData\Local\Temp\PCPE Setup.exe
C:\Users\Alan\PCPE_3.0.1.msi -> C:\Users\Alan\AppData\Local\Temp\PCPE_3.0.1.msi
C:\Users\Alan\PCPE_3.0.msi -> C:\Users\Alan\AppData\Local\Temp\PCPE_3.0.msi
C:\Users\Alan\pt_res.dll -> C:\Users\Alan\AppData\Local\Temp\pt_res.dll
C:\Users\Alan\ResourceReader.dll -> C:\Users\Alan\AppData\Local\Temp\ResourceReader.dll
C:\Users\Alan\ru_res.dll -> C:\Users\Alan\AppData\Local\Temp\ru_res.dll
17 File(s)
Speaking from memory, without the skills of local experts, a script can use something like
FOR /F %%a in ('xcopy *.* %TEMP% /L /F /S') do (
clever-code
)
You then need some "clever-code" to strip out each "->" and the destination path,
and add a preceding incrementing number with each item.
Regards
Alan