Muito fácil de obter a data e a hora, na verdade:
set Year=
for /f "skip=2" %%x in ('wmic Path Win32_LocalTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List') do (
if not defined Year set %%x
)
Estou assumindo a hora local aqui. Se você precisar do UTC, adapte-o de acordo.
Seu formato torna as coisas mais complicadas. Desculpas se eu tiver algo errado aqui, não estou familiarizado com os formatos am / pm.
if %Hour% LSS 12 (
set ampm=AM
if %Hour%==0 set Hour=12
) else (
set ampm=PM
set /a Hour-=12
)
Precisamos de alguns zeros à esquerda:
if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Minute% LSS 10 set Minute=0%Minute%
if %Hour% LSS 10 set Hour=0%Hour%
Então é hora de montar as peças:
set Timestamp=%Month%-%Day%-%Year% %Hour%:%Minute% %ampm%
(Apenas uma nota aleatória: Por que você quer esse formato de timestamp?)