I've found myself using this pattern alot lately. I figured I'd post it for posterity.
@ECHO OFF
SET NOWD=%DATE%
SET mm=%NOWD:~4,2%
SET dd=%NOWD:~7,2%
SET yyyy=%NOWD:~10,4%
:: ECHO mm=%mm%
:: ECHO dd=%dd%
:: ECHO yyyy=%yyyy%
SET NOWT=%TIME%
SET hour=%TIME:~0,2%
SET min=%TIME:~3,2%
SET sec=%TIME:~6,2%
SET ms=%TIME:~9,2%
:: ECHO NOWT=%NOWT%
:: ECHO hour=%hour%
:: ECHO min=%min%
:: ECHO sec=%sec%
:: ECHO ms=%ms%
SET LOGFILENAME=%yyyy%%mm%%dd%_%hour%%min%%sec%%ms%.txt
:: ECHO %LOGFILENAME%
:: make sure to use a double arrow to append, not 'create'
ECHO %DATE% - %TIME% >> %LOGFILENAME%
ECHO Whatever your program should do >> %LOGFILENAME%