Formato de fecha y hora en un script por lotes de Windows

En un script por lotes de Windows (Windows XP) necesito formatear la fecha y la hora actuales para su uso posterior en nombres de archivos, etc.

Es similar a la pregunta de desbordamiento de pilaCómo anexar una fecha en archivos por lotes, pero con el tiempo también.

Tengo esto hasta ahora:

echo %DATE%
echo %TIME%
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%__%time:~0,2%_%time:~3,2%_%time:~6,2%
echo %datetimef%

lo que da:

28/07/2009
 8:35:31.01
2009_07_28__ 8_36_01

¿Hay alguna forma de permitir una hora de un solo dígito en% TIME%, para que pueda obtener lo siguiente?

2009_07_28__08_36_01

Respuestas a la pregunta(30)

Su respuesta a la pregunta