Tanggal saat ini dalam nama file

15

Saya telah menjadwalkan skrip cadangan yang membuat database dump. Bagaimana saya bisa menambahkan cap waktu tanggal ke nama file?

Saya berbicara tentang Windows dan CMD.

Bogdan Gusiev
sumber

Jawaban:

21

Di prompt perintah dan file batch, Anda dapat menggunakan %date% dan %time%untuk mengembalikan tanggal dan waktu masing-masing. Tanggal berfungsi dengan baik, tetapi nilai waktu yang dikembalikan berisi titik dua, yang ilegal untuk digunakan dalam nama file, tetapi ada cara untuk menghapusnya.

Gunakan sesuatu seperti:

COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt

Ini akan menghasilkan nama file seperti file_172215_01062009.txt

Pembaruan: Komentar di bawah ini memiliki tikungan menarik pada perintah ini serta beberapa masalah potensial yang dapat Anda hindari.

aalaap
sumber
3
Tip kecil yang bagus. BTW, jika Anda melakukannya sebaliknya, yaitu: "file_20090601_172215", Anda akan melihat file dalam urutan yang benar dalam daftar alfabet.
5
Anda juga dapat menggunakan% time :: =% untuk menghapus titik dua.
user1686
2
Saya akan mengatakan bahwa tanggal substring akan pecah segera setelah sistem lokal berbeda dari saat skrip diuji? Bahkan bisa bekerja untuk pengguna pengujian dan istirahat sebagai runner naskah karena format tampilan tanggal yang berbeda set ...
Oskar Duveborn
3
Waspadalah jam 0 - 9! CMD menetapkan karakter pertama dari jam ke <SPACE>, daripada 0. Perintah COPY di atas akan mengalami masalah jika Anda tidak menyertakan nama file tujuan dalam tanda kutip.
Evan Anderson
2
Catat itu %DATE%dan %TIME%sadari lokal! Itu berarti bahwa pada mesin Eropa, Anda dapatkan DD.MM.YYYY. Arrgh.
Pekka
14

Gunakan variabel %DATE%dan / atau %TIMElingkungan, secara opsional menggantikan karakter yang tidak diizinkan dalam nama file, menggunakan %name:from=to%(%TIME::=% akan menghapus semua titik dua).

teori »echo% date%
2009-06-01

teori »gema% waktu%
16: 30: 41,46

teori »gema% waktu :: =%
163052,17

teori »echo% time :: =,%
16,30,58,68

teori »gema cadangan-% tanggal% -% waktu :: = -% .zip
backup-2009-06-01-16-31-18,82.zip
pengguna1686
sumber
1
wow, tidak pernah tahu tentang: x = y trick. itu keren sekali.
Eugene Katz
1
+1 untuk: = trik, iv'e berada di game ini sejak MS-Dos 1 dan itulah pertama kalinya Iv'e melihat yang itu. Akan lebih baik jika Anda dapat mengubah banyak karakter juga !! :-)
shawty
Yah, itu hanya ditambahkan ke Cmd.exe dalam seri Windows NT ... Dan jika Anda ingin melakukan beberapa perubahan, hanya memiliki rantai set tmp=%tmp:x=y%dll.
user1686
Konten% DATE% (jumlah pengajuan, konten, dan pemesanan) bersifat spesifik lokal.
symcbean
4

Satu-satunya cara yang dapat diandalkan untuk mendapatkan tanggal yang sesuai apa pun pengaturan regional, adalah solusi dari foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
Eric Ouellet
sumber
1

Gunakan% DATE% variabel dalam nama file.

Ada variabel% TIME% juga, tetapi mengandung karakter yang tidak diizinkan dalam nama file.

Berikut adalah contoh penulisan baris teks ke dalam file baru, di mana file yang dibuat memiliki tanggal dan waktu dalam namanya.

echo "testfile" >> backup-%DATE%.txt
Frode Lillerud
sumber