Um procedimento :unique
retorna um nome de arquivo temporário da data e hora momentâneas. A precisão do tempo é de aproximadamente 3 milissegundos, probabilidade de colisão muito próxima de zero.
@echo off
set "somefile="
call :unique somefile
rem echo %somefile%
type file.txt file2.txt 2>NUL | sort > "%tmp%\%somefile%.txt"
someprog "%tmp%\%somefile%.txt"
erase "%tmp%\%somefile%.txt"
goto :eof
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:unique
@SETLOCAL enableextensions enabledelayedexpansion
set "unq="
for /F %%G in ('WMIC OS GET localdatetime^|findstr /I /V "local"') do (
set "unq=%%G")
set "unq=%unq:.=%"
set "unq=%unq:+=%"
@ENDLOCAL &set "%1=%unq%"
exit /B
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::