%DATE%
И %TIME%
переменные среды обеспечивают текущую дату и время на машинах Windows , в командной строке , так и внутри пакетного файла.
К сожалению, эти значения учитывают локали! Это означает, что, скажем, на немецкой машине, вы получите
26.1.2011
вместо того
2011-26-01
это испортит сортировку, если вы хотите использовать эту переменную в имени файла.
Есть ли какой-нибудь простой способ получить незнакомую по локали YYYY-MM-DD
строку даты в пакетном файле Windows?
На данный момент я работаю с этим довольно хитрым обходным путем:
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%
но теперь это специфично для немецкой локали - очевидно, совершенно независимое решение было бы намного приятнее.
Рассматриваемая ОС - Server 2008. Я бы предпочел не использовать сторонний инструмент, если это вообще возможно.