%DATE%
I %TIME%
zmienne środowiskowe zapewniają bieżącą datę i czas na komputerach z systemem Windows w wierszu poleceń i wewnątrz pliku wsadowego.
Niestety, te wartości są zależne od ustawień regionalnych! Oznacza to, że powiedzmy na niemieckiej maszynie
26.1.2011
zamiast
2011-26-01
to psuje sortowanie, jeśli chcesz użyć tej zmiennej w nazwie pliku.
Czy jest jakiś prosty sposób na uzyskanie nieświadomego ustawienia narodowego YYYY-MM-DD
ciągu daty w pliku wsadowym Windows?
W tej chwili pracuję z tym dość niechlujnym obejściem:
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%
ale jest to teraz specyficzne dla niemieckiej lokalizacji - oczywiście całkowicie niezależne rozwiązanie byłoby znacznie ładniejsze.
System operacyjny, o którym mowa, to Server 2008. Wolałbym nie używać narzędzia innej firmy, jeśli to w ogóle możliwe.
for /f %%x in ('wmic os get localdatetime ^| findstr /b [0-9]') do @set X=%%x
jest trochę milszy. Dostępna jest tutaj także bardziej kompaktowa wersja , a mianowicie w tym komentarzu .findstr
rozwiązanie jest znacznie lepsze, ponieważ w moim przypadku oryginalnafor
(bezskip
) iteruje 3 razy. Raz dla słowa"LocalDateTime"
, drugi raz dla rzeczywistej daty i trzeci raz dla pustej wartości (może podział wiersza?).Oto dwuliniowy, którego używam, który wydaje się działać bez względu na wersję systemu Windows lub ustawienia czasu lokalnego:
Spowoduje to ustawienie zmiennej o nazwie% CUR_DATE% w następującym standardowym formacie ISO:
Próbowałem uczynić z niego jedno-liniową wersję z &&, ale wydawało się, że nie jest to konieczne, więc skorzystałem z wersji dwuliniowej. Mam nadzieję że to pomoże.
źródło
Używam tej sztuczki, aby uzyskać UTC ..
Ma jednak efekt uboczny polegający na krótkiej zmianie całego systemu na UTC. Prawdopodobnie jest to OK na osobistej stacji roboczej, ale nie jestem pewien, jaki wpływ miałby duży serwer produkcyjny, który i tak powinien być ustawiony na UTC.
źródło