Kami memiliki pekerjaan batch yang berjalan setiap hari dan menyalin file ke folder pengambilan. Saya juga ingin mengambil salinan file itu dan memasukkannya ke folder arsip dengan nama file
yyyy-MM-dd.log
Apa cara termudah untuk melakukan ini dalam pekerjaan batch Windows?
Saya pada dasarnya mencari yang setara dengan perintah Unix ini:
cp source.log `date +%F`.log
windows
batch-file
cmd
timestamp
Eoin Campbell
sumber
sumber
Jawaban:
Tapi itu tergantung pada lokalnya. Saya tidak yakin apakah
%DATE%
dilokalkan, atau tergantung pada format yang ditentukan untuk tanggal singkat di Windows.Berikut adalah cara yang tidak tergantung lokal untuk mengekstrak tanggal saat ini dari jawaban ini , tetapi bergantung pada
WMIC
danFOR /F
:sumber
2014-5.-01
(ketika itu akan terjadi2014-05-26
). Jadi berhati-hatilah, jika Anda menerbitkan skrip yang berisi ini!%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
Ini berfungsi untuk saya dan merupakan solusi yang aman untuk nama file (meskipun ini menghasilkan format MM-dd-YYYY):
Perintah pertama mengambil DATE dan menggantikannya
/
dengan-
, mengambil TIME dan menggantinya:
dengan-
, dan menggabungkannya ke dalam format DATE @ TIME.set
Pernyataan kedua menghapus spasi apa pun, dan pernyataan ketigaset
menggantikan,
dengan.
dan menambahkan.jpg
ekstensi.Kode di atas digunakan dalam skrip kecil yang menarik gambar dari kamera IP keamanan untuk diproses lebih lanjut:
sumber
10-12-2014@14-22-59,44.jpg
dengan koma sebelum milidetikset SAVESTAMP=%SAVESTAMP:,=.%.jpg
sebelumecho
pernyataan. Jika itu berhasil, saya akan memperbarui jawabannya.08.06.2016@15-42-20,33.jpg
dengan laptop Jerman saya dan dengan laptop[email protected]
Inggris saya.yyyy-MM-dd
HANYA Untuk Lokal Prancis (Prancis) , hati-hati karena
/
muncul pada tanggal:Untuk masalah file log kami, berikut adalah proposal saya untuk HANYA Lokal Prancis :
sumber
"_0:00"
(karakter garis bawah adalah spasi)Berikut adalah solusi independen lokal (salin ke file bernama SetDateTimeComponents.cmd):
Saya meletakkan semua skrip .cmd saya ke dalam folder yang sama (% SCRIPTROOT%); skrip apa pun yang membutuhkan nilai tanggal / waktu akan memanggil SetDateTimeComponents.cmd seperti pada contoh berikut:
Seperti yang ditunjukkan contoh, Anda dapat memanggil SetDateTimeComponents.cmd kapan pun Anda perlu memperbarui nilai tanggal / waktu. Menyembunyikan skrip parsing waktu dalam file SetDateTimeComponents.cmd miliknya adalah cara yang bagus untuk menyembunyikan detail yang jelek, dan, yang lebih penting, hindari kesalahan ketik.
sumber
prompt $d $t
mengembalikan 30.05.2016 15: 35: 56,93 di sistem saya.Karena gagasan untuk merobek
%DATE%
dan%TIME%
memisahkan serta menumbuk kembali tampak rapuh, berikut adalah alternatif yang menggunakan PowerShell oneliner:Referensi untuk
get-date
ada di sini , dengan opsi format untuk gaya .NET dan gaya UNIX.sumber
Saya sering menggunakan ini, dan memasukkan semuanya ke dalam satu perintah salin. Salinan example.txt berikut sebagai example_YYYYMMDD_HHMMSS.txt dan tentu saja Anda dapat memodifikasinya agar sesuai dengan format pilihan Anda. Tanda kutip hanya diperlukan jika ada spasi di filespec. Jika Anda ingin menggunakan kembali tanggal / stempel waktu yang sama persis, Anda harus menyimpannya dalam variabel.
sumber
Ini akan memastikan bahwa hasilnya adalah nilai 2-digit ... Anda dapat mengatur ulang keluaran sesuai dengan keinginan Anda dan mengujinya dengan menghapus komentar di bagian diagnostik. Nikmati!
(Saya meminjam banyak ini dari forum lain ...)
sumber
Buat file dengan tanggal sekarang sebagai nama file (mis. 2008-11-08.dat)
Dengan tanggal saat ini tetapi tanpa "-" (mis. 20081108.dat)
sumber
Mungkin ini bisa membantu:
atau
sumber
Saya mengumpulkan program C kecil untuk mencetak stempel waktu saat ini (aman lokal, tidak ada karakter buruk ...). Kemudian, saya menggunakan perintah FOR untuk menyimpan hasil dalam variabel lingkungan:
Ini tautannya:
https://github.com/HarryPehkonen/dos-timestamp
sumber
Saya tahu utas ini sudah tua tetapi saya hanya ingin menambahkan ini di sini karena itu membantu saya banyak mencoba mencari tahu ini semua dan bersihnya. Hal yang menyenangkan tentang ini adalah Anda bisa memasukkannya ke dalam loop untuk file batch yang selalu berjalan. Log up-time server atau sesuatu. Itulah yang saya gunakan untuk itu. Saya harap ini membantu seseorang suatu hari nanti.
sumber
ERROR : Invalid Parameter #12 : "/LOG:C:\opt\Sync_08.10.2020_16:27:39.log"
Sebagai perbaikan, saya menggunakan tanda hubung:set FreshTime=%hour%-%min%-%secs%
Anda cukup mendeteksi format lokal saat ini dan bisa mendapatkan tanggal dalam format Anda, misalnya:
sumber
Saya tahu ini adalah posting lama, tetapi ada jawaban yang JAUH lebih sederhana (meskipun mungkin hanya berfungsi di versi windows yang lebih baru). Cukup gunakan parameter / t untuk perintah dos DATE dan TIME untuk hanya menampilkan tanggal atau waktu dan tidak meminta Anda untuk mengaturnya, seperti ini:
sumber
1) Anda dapat mengunduh GNU coreutils yang disertakan dengan tanggal GNU
2) Anda dapat menggunakan VBScript , yang membuat manipulasi tanggal lebih mudah di Windows:
Jalankan skrip sebagai:
sumber
Ini bekerja dengan baik dengan lokal Jerman (saya), harus mungkin untuk menyesuaikannya dengan kebutuhan Anda ...
sumber
%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
bekerja untuk lokasi Portugis juga! Maksud saya YYYYMMDDUntuk file zip besar untuk penerapan, saya menggunakan seperempat jam. Tidak ada orang lain di halaman ini yang menyebutkannya sebelumnya, jadi saya akan meletakkan skrip kecil saya di sini:
Ini belum nol pad seperempat jam dari tengah malam hingga jam 5 pagi, tetapi masih membuatnya sehingga Anda dapat memiliki rilis yang dicap beberapa kali sehari dengan sedikit tabrakan.
Semoga membantu.
sumber
menggunakan saran Martin dengan sedikit perubahan untuk menambahkan cap waktu ke nama file:
Untuk 10:17:21 23/10/2019 Hasilnya adalah:
sumber