The %DATE%
dan %TIME%
variabel lingkungan memberikan tanggal dan waktu pada mesin Windows pada baris perintah dan di dalam sebuah file batch.
Sayangnya, nilai-nilai itu sadar akan lokal! Artinya, katakanlah, pada mesin Jerman, Anda akan mendapatkannya
26.1.2011
dari pada
2011-26-01
ini mengacaukan penyortiran jika Anda ingin menggunakan variabel ini dalam nama file.
Apakah ada cara mudah untuk mendapatkan YYYY-MM-DD
string tanggal lokal-tidak sadar dalam file batch Windows?
Untuk saat ini, saya bekerja dengan solusi yang agak kusam ini:
for /f "tokens=1,2,3,4 delims=. " %%i in ('date /t') do set date=%%k-%%j-%%i
echo %date%
tetapi sekarang ini adalah spesifik lokal Jerman - jelas, solusi yang sepenuhnya independen akan jauh lebih baik.
OS yang dimaksud adalah Server 2008. Saya lebih suka tidak menggunakan alat pihak ketiga, jika memungkinkan.
for /f %%x in ('wmic os get localdatetime ^| findstr /b [0-9]') do @set X=%%x
sedikit lebih bagus. Ada juga versi yang lebih ringkas yang tersedia di sini , yaitu di komentar itu .findstr
solusinya jauh lebih baik, seperti untuk kasus saya, yang aslifor
(tanpaskip
) berulang 3 kali. Satu kali untuk kata"LocalDateTime"
, kedua kalinya untuk tanggal aktual, dan ketiga kalinya untuk nilai kosong (mungkin satu baris?).Berikut adalah dua baris yang telah saya gunakan, yang tampaknya berfungsi terlepas dari versi Windows atau pengaturan waktu lokal:
Ini akan menetapkan variabel yang disebut% CUR_DATE% dalam format standar ISO berikut:
Saya mencoba membuatnya satu garis dengan &&, tetapi sepertinya tidak perlu, jadi saya beralih ke versi dua baris. Semoga ini membantu.
sumber
Saya menggunakan trik ini untuk mendapatkan UTC ..
Namun itu memang memiliki efek samping mengubah sebentar seluruh sistem ke UTC. Ini mungkin OK di workstation pribadi, tetapi tidak yakin apa dampaknya akan menjadi server produksi besar, yang mungkin harus diatur ke UTC.
sumber