Pembaruan: Sekarang ini tahun 2016 saya akan menggunakan PowerShell untuk ini kecuali ada alasan yang sangat kompatibel untuk mundur, terutama karena masalah pengaturan regional dengan penggunaan date
. Lihat https://stackoverflow.com/a/19799236/8479 di @ npocmaka
Apa pernyataan baris perintah Windows yang bisa saya gunakan untuk mendapatkan datetime saat ini dalam format yang bisa saya masukkan ke nama file?
Saya ingin memiliki file bat. Yang zip direktori ke arsip dengan tanggal dan waktu saat ini sebagai bagian dari nama, misalnya Code_2008-10-14_2257.zip
,. Apakah ada cara mudah yang bisa saya lakukan, terlepas dari pengaturan regional mesin?
Saya tidak terlalu keberatan dengan format tanggal, idealnya itu adalah tttt-bb-hh, tetapi segala sesuatu yang sederhana tidak masalah.
Sejauh ini saya sudah mendapatkan ini, yang pada mesin saya memberi saya Tue_10_14_2008_230050_91
:
rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code
Saya bisa hidup dengan ini, tetapi tampaknya agak kikuk. Idealnya akan lebih singkat dan memiliki format yang disebutkan sebelumnya.
Saya menggunakan Windows Server 2003 dan Windows XP Professional. Saya tidak ingin menginstal utilitas tambahan untuk mencapai ini (walaupun saya menyadari ada beberapa yang akan melakukan format tanggal yang bagus).
[datetime]::now.tostring("yyyy-MM-dd")
Jawaban:
Lihat Windows Batch File (.bat) untuk mendapatkan tanggal saat ini dalam format MMDDYYYY :
Jika Anda lebih suka waktu dalam format 24 jam / militer, Anda dapat mengganti baris FOR kedua dengan ini:
Jika Anda menginginkan tanggal secara terpisah dari urutan hari / bulan wilayah, Anda dapat menggunakan "WMIC os GET LocalDateTime" sebagai sumber, karena ini dalam urutan ISO:
sumber
For /f "tokens=1-3 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%b-%%a)
untuk baris kedua.For /f "tokens=1-2 delims=/: " %%a in ("%TIME%") do (if %%a LSS 10 (set mytime=0%%a%%b) else (set mytime=%%a%%b))
Itu mengembalikan nilai-nilai seperti "0001" dan "0315" yang saya sukai di nama file saya.wmic
perintah! Sejauh ini saya hanya melihatWMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table
. Demikian juga, untuk mendapatkan20120623-1619
zona waktu Amsterdam lokal saya, dalam satu baris:for /f %%a in ('wmic os get LocalDateTime ^| findstr ^[0-9]') do (set ts=%%a) & set datetime=%ts:~0,8%-%ts:~8,4%
%%a was unexpected at this time.
Penguraian waktu tanggal independen regional
Format output dari
%DATE%
dan daridir
perintah tergantung secara regional dan dengan demikian tidak kuat atau pintar. date.exe (bagian dari UnxUtils ) memberikan informasi tanggal dan waktu dalam format apa pun. Anda juga dapat mengekstrak informasi tanggal / waktu dari file apa pun dengandate.exe
.Contoh: (dalam skrip cmd gunakan %% bukan%)
date.exe +"%Y-%m-%d"
2009-12-22
date.exe +"%T"
18:55:03
date.exe +"%Y%m%d %H%M%S: Any text"
20091222 185503: Teks apa saja
date.exe +"Text: %y/%m/%d-any text-%H.%M"
Teks: 09/12/22-any text-18.55
Command: date.exe +"%m-%d """%H %M %S """"
07-22 "18:55:03" `
Informasi tanggal / waktu dari file referensi:
date.exe -r c:\file.txt +"The timestamp of file.txt is: %Y-%m-%d %H:%M:%S"
Menggunakannya dalam skrip CMD untuk mendapatkan informasi tahun, bulan, hari, waktu:
Menggunakannya dalam skrip CMD untuk mendapatkan cap waktu dalam format apa pun yang diperlukan:
Mengekstrak informasi tanggal / waktu dari file referensi apa pun.
Menambahkan ke file informasi tanggal / waktu:
date.exe adalah bagian dari alat GNU gratis yang tidak memerlukan instalasi.
CATATAN: Menyalin
date.exe
ke direktori apa pun yang berada di jalur pencarian dapat menyebabkan skrip lain gagal yang menggunakan perintah bawaan Windowsdate
.sumber
date.exe
tampaknya tergantung pada lokal. Ini mengembalikan tanggal dalam dd / MM / yyyy pada sistem saya, jika itu lokal-independen saya harapkan baik MM / dd / yyyy atau yyyy-MM-dd. Saya tidak berpikir jawaban ini berbicara tentang date.exe built-in tetapi beberapa versi pihak ketiga.Dua cara lagi yang tidak tergantung pada pengaturan waktu (keduanya diambil dari : Bagaimana mendapatkan data / waktu independen dari lokalisasi:) . Dan keduanya juga mendapatkan hari dalam seminggu dan tidak satupun dari mereka memerlukan izin admin !:
MAKECAB - akan bekerja pada SETIAP sistem Windows (cepat, tetapi membuat file temp kecil) (skrip foxidrive):
Informasi lebih lanjut tentang fungsi kencan .
ROBOCOPY - ini bukan perintah asli untuk Windows XP dan Windows Server 2003, tetapi dapat diunduh dari situs microsoft . Tetapi built-in dalam segala hal mulai dari Windows Vista dan di atasnya:
Dan tiga cara lagi yang menggunakan bahasa skrip Windows lainnya. Mereka akan memberi Anda lebih banyak fleksibilitas misalnya Anda bisa mendapatkan minggu dalam setahun, waktu dalam milidetik dan sebagainya.
JScript / batch hybrid (harus disimpan sebagai
.bat
). JScript tersedia di setiap sistem dari NT dan di atasnya, sebagai bagian dari Windows Script Host ( meskipun dapat dinonaktifkan melalui registri, ini adalah kasus yang jarang terjadi ):VSCRIPT / BATCH hybrid ( Apakah mungkin untuk menanamkan dan mengeksekusi VBScript dalam file batch tanpa menggunakan file sementara? ) Kasus yang sama seperti JScript, tetapi hibridisasi tidak begitu sempurna:
PowerShell - dapat diinstal pada setiap mesin yang memiliki .NET - unduh dari Microsoft ( v1 , v2 , v3 (hanya untuk Windows 7 ke atas)). Itu diinstal secara default pada segala sesuatu dari Windows 7 / Windows Server 2008 dan di atas:
Untuk menggunakannya dari file batch:
Self-compiled jscript.net/batch (tidak pernah melihat mesin Windows tanpa .NET, jadi saya pikir ini adalah perangkat yang cukup portabel):
Logman Ini tidak bisa mendapatkan tahun dan hari dalam seminggu. Ini relatif lambat dan juga membuat file sementara dan didasarkan pada waktu yang diletakkan logman pada file log-nya. Ini akan bekerja pada semuanya mulai dari Windows XP dan di atasnya. Mungkin tidak akan pernah digunakan oleh siapa pun - termasuk saya - tetapi satu cara lagi ...
Satu lagi cara dengan WMIC yang juga memberikan minggu dalam setahun dan hari dalam seminggu, tetapi bukan milidetik (untuk milidetik periksa jawaban foxidrive):
Menggunakan TYPEPERF dengan beberapa upaya untuk menjadi cepat dan kompatibel dengan pengaturan bahasa yang berbeda dan secepat mungkin:
MSHTA memungkinkan memanggil metode JavaScript yang mirip dengan metode JScript yang ditunjukkan pada # 3 di atas. Ingatlah bahwa properti objek Tanggal JavaScript yang melibatkan nilai bulan diberi nomor dari 0 hingga 11, bukan 1 hingga 12. Jadi nilai 9 berarti Oktober.
sumber
makecab
: ini berfungsi dengan membuat file bernama~.rpt
, dan mencaristring
di dalamnya, dimulai denganmakecab
, yang merupakan garis sepertiMakeCAB Report: Tue Sep 02 22:15:57 2014
. bagi saya perintah ini tidak dilokalkan itu lokal independen. Trik ini mengandalkan itu. Mari berharap itu tidak akan terjadi, atau waspadalah!mshta
hibrida? :) Keberatan jika saya mengedit jawaban Anda dan menambahkannya? Ini tampaknya menjadi koleksi terbaik solusi esoteris, dan sepertinyamshta
termasuk di sini.Berikut varian dari alt.msdos.batch.nt yang berfungsi secara lokal-mandiri
Letakkan ini di file teks, mis. GetDate.cmd
Agar kode berfungsi sans msg kesalahan ke stderr, saya harus menambahkan tanda kutip tunggal arount penugasan variabel untuk %% a, %% b dan %% c. Lokal saya (PT) menyebabkan kesalahan pada satu tahap dalam perulangan / parsing di mana hal-hal seperti "set = 20" dieksekusi. Kutipan menghasilkan token (meskipun kosong) untuk sisi kiri pernyataan penugasan.
Kelemahannya adalah nama variabel lokal yang berantakan: 'yy', 'mm' dan 'dd'. Tapi hei, siapa peduli!
sumber
dd
,mm
danyy
dalam output dariecho:^|date
.date
memberiGeben Sie das neue Datum ein: (TT-MM-JJ)
, di manaJJ
naskah Anda rusak (diharapkanYY
))Saya menggunakan ini (sekali lagi bukan wilayah independen (UK))
sumber
Empat baris pertama dari kode ini akan memberi Anda variabel YY DD MM YYYY HH Min Sec yang dapat diandalkan di Windows XP Professional dan lebih tinggi.
sumber
Sayangnya ini tidak kebal terhadap pengaturan regional, tetapi ia melakukan apa yang Anda inginkan.
Luar biasa hal-hal yang dapat Anda temukan di Wikipedia .
sumber
Silakan gunakan skrip berikut untuk mendapatkan hari ini di baris perintah:
sumber
Cara lain ( kredit ):
Perhatikan bahwa kedua jawaban saya di sini masih bergantung pada urutan hari dan bulan sebagaimana ditentukan oleh pengaturan regional - tidak yakin bagaimana cara mengatasinya.
sumber
sumber
http://www.dotnetperls.com/7-zip-examples
memiliki beberapa poin yang baik semoga bermanfaat bagi seseorang di masa depan.Ini tidak terlalu singkat tetapi mungkin cara yang lebih fleksibel ( kredit ):
sumber
Berikut cara mendapatkan waktu kencan dalam satu baris:
Di AS ini akan menampilkan "yyyy-mm-dd hhmm". Pengaturan regional yang berbeda akan menghasilkan output% date%% yang berbeda, tetapi Anda dapat mengubah urutan token.
Jika Anda menginginkan format yang berbeda, ubah pernyataan gema dengan mengatur ulang token atau menggunakan pemisah yang berbeda (atau tidak ada).
sumber
Cukup gunakan baris ini:
sumber
Jawaban singkat :
Jawaban panjang
sumber
Solusi one-liner Matthew Johnson untuk mendapatkan tanggal dan waktu one-liner fasih dan bermanfaat.
Namun itu membutuhkan modifikasi sederhana untuk bekerja dari dalam file batch:
sumber
echo %date:/=-%%time::=-%
Dan di sini adalah file batch yang sama untuk porsi waktu.
--Jeroen
sumber
z: & forfiles /m *.jpg /s /d 07/16/2015 /c “cmd /c echo @fdate @ftime @path”
Tapi saya ingin tahu cara memuat file menurut tanggal Dibuat. Bantuan apapun akan sangat dihargai. Sebuah pertanyaan telah diajukan pada stackoverflow tetapi belum ada jawaban. Silakan lihat tautan untuk detail stackoverflow.com/q/32293517/3327081forfiles
.Saya mengubah jawaban dengan file batch dari vMax sehingga berfungsi dengan bahasa Belanda juga.
Belanda - terus-menerus seperti kita - memiliki beberapa perubahan dalam
%date%
,date/t
dandate
istirahat yang asli batch-file tersebut.Alangkah baiknya jika beberapa orang dapat memeriksa ini terhadap lokal Windows lain juga, dan melaporkan kembali hasilnya.
Jika file batch gagal di lokasi Anda, silakan sertakan output dari kedua pernyataan ini pada prompt perintah:
echo:^|date
date/t
Ini adalah contoh dari output yang harus Anda dapatkan dari file batch:
Berikut adalah kode yang direvisi dengan komentar tentang alasannya:
--Jeroen
sumber
jj-mm-aaaa
untuk jour, mois, annee? Italia mungkingg/mm/aaaa
untuk giorno, mese, anno? Jermantt.mm.jjjj
untuk Tag, Monat, Jahr? Tapi kemudian: Saya kira di sebagian besar negara hanya beberapa bahasa yang digunakan. Seperti di Belanda memang Windows akan sering menjadi bahasa Inggris atau Belanda, tidak banyak lagi. Cukup baik untukku.jj
, dan tidak memberlakukan tahun 4 digit), tetapi digunakanshift
untuk membuang hari sepertiMon
atauma
. Hanya berbeda.(TT-MM-JJ)
,date/t
outputnya adalah23.06.2012
. / cc @Arjanreg query "HKCU\Control Panel\International" /vShortDate
. Hati-hati saat menguji: untuk prompt perintah terbuka, mengubah pengaturan Panel Kontrol juga mengubah format yang digunakan untuk menampilkan tanggal (untuk keduanyadate
dandate /t
danecho %date%
), tetapi pada Windows 7 TIDAK mengubah format untuk tanggal baru! Seperti mengubah singkat format tanggal saya keYY/MM/dd
, membuat saya:The current date is: 12/06/23 Enter the new date: (mm-dd-yy)
. Membuka command prompt baru akan memperbaikinya.reg query "HKCU\Control Panel\International" /v sShortDate
.Inilah yang saya gunakan:
Jika Anda ingin gagasan lebih lanjut untuk mengotomatiskan cadangan ke arsip 7-Zip, saya memiliki proyek bebas / terbuka yang dapat Anda gunakan atau tinjau untuk gagasan: http://wittman.org/ziparcy/
sumber
Saya punya masalah serupa. Saya memiliki unduhan harian otomatis dari server FTP dari file yang dienkripsi. Saya ingin mendekripsi file menggunakan gpg, mengubah nama file ke tanggal saat ini (format YYYYMMDD) dan meletakkan file yang didekripsi ke folder untuk departemen yang benar.
Saya pergi melalui beberapa saran untuk mengubah nama file sesuai tanggal dan tidak beruntung sampai saya menemukan solusi sederhana ini.
Ini bekerja dengan sempurna (yaitu, nama file keluar sebagai "2011-06-14.txt").
(Sumber)
sumber
Fungsi yang didasarkan pada
wmic
:Terbalik: Wilayah independen. Kelemahan: Hanya administrator sistem yang dapat menjalankan wmic.exe.
Pemakaian:
Ini menggemakan string seperti ini:
Perhatikan bahwa parameter fungsi di luar Parameter - yaitu, Anda harus memberikan nama variabel, bukan nilai.
Semua parameter bersifat opsional, jadi
call:Now Y M
ini panggilan yang valid jika Anda hanya ingin mendapatkan tahun dan bulan.sumber
http://sourceforge.net/projects/unxutils/files/
Lihat di dalam file ZIP untuk sesuatu yang disebut "Date.exe" dan beri nama "DateFormat.exe" (untuk menghindari konflik).
Masukkan ke dalam folder system32 Windows Anda.
Ini memiliki banyak opsi "tanggal keluaran".
Untuk bantuan, gunakan
DateFormat.exe --h
Saya tidak yakin bagaimana Anda akan memasukkan hasilnya ke variabel lingkungan ... menggunakan SET.
sumber
Solusi independen regional yang menghasilkan format tanggal ISO:
Apa yang masih bisa dioptimalkan: Proses lain mungkin bingung jika menggunakan format tanggal dalam periode singkat ketika sedang dimodifikasi. Jadi parsing output sesuai dengan format string yang ada bisa 'lebih aman' - tetapi akan lebih rumit
sumber
sumber
Diberi lokalitas yang dikenal, untuk referensi dalam bentuk fungsional. The
ECHOTIMESTAMP
panggilan menunjukkan bagaimana untuk mendapatkan timestamp ke dalam variabel (DTS
dalam contoh ini.)Dan disimpan ke file, timestamp.bat, ini hasilnya:
sumber
(yy)yy年m月d日 hh:mm
- tidak ada nol di depan. (yy) dapat diabaikan karena kami memiliki 2 digit tahun, atau 4 digit tahun. Tetapi harap dicatat satu hal: format waktu tanggal dapat diubah per mesin.systeminfo
di CLI dan beri tahu saya apa yang Anda lihatSystem Locale
. Program membutuhkan waktu untuk berjalan, tetapi mungkin hasil lokal dapat di-cache dan selanjutnya digunakan untuk mengindeks format timestamp.Dengan Windows 7, kode ini berfungsi untuk saya:
sumber
independent of the regional settings of the machine
Saya perhatikan bahwa o / p tidak meminta solusi independen kawasan. Solusi saya adalah untuk Inggris.
Ini adalah solusi paling sederhana, solusi 1-baris, untuk digunakan dalam file Batch:
sumber
...particularly because of the regional settings issue with using date
. Btw. Solusi Anda sama dengan dua puluh jawaban lainnya.echo %date:/=-%
Saya tahu bahwa ada banyak cara yang telah disebutkan. Tapi di sini adalah cara saya untuk memecahnya untuk memahami bagaimana hal itu dilakukan. Semoga bermanfaat bagi seseorang yang menyukai metode langkah demi langkah.
sumber
independent of the regional settings of the machine