Saya menjalankan program dari file batch, yang ketika selesai melakukan pencadangan otomatis database MySQL saya.
Saya ingin file batch untuk membuat cadangan yang berbeda untuk setiap proses, sehingga saya dapat melacak balik.
Nama file yang diinginkan adalah gnucash_shockwave-20121128210344.sql (Format tanggal YYYY-MM-DD-HH-MM-SS)
Saya telah googled beberapa hal yang mengatakan mencoba %DATE:~4%
dan %Date.Year%
tetapi saya mendapatkan kesalahan yang mengatakanThe system cannot find the specified path.
Jika saya menghapus upaya untuk cap waktu itu, skrip berfungsi dengan baik, tetapi lebih dari menulis cadangan sebelumnya
Ini adalah bagian dari kode yang saya bicarakan:
@REM *** EXECUTION ***
echo. Starting backup...
SET timestamp %DATE:~-4%%DATE:~4,2%%DATE:~7,2%%TIME%
%mysqldir%\mysqldump -u %mysqluser% -p%mysqlpassword% -h %mysqlhost% -P %mysqlport% --databases --routines --verbose gnucash_shockwave > %BackupDir%\gnucash_shockwave-%timestamp%.sql
echo.------------------------------------------------------
echo. Backup complete!
Ada saran?
windows
batch-file
date-time
guyfromfl
sumber
sumber
Jawaban:
Format Tanggal dan Waktu tergantung pada apa yang Anda tentukan di applet Panel Kontrol Wilayah dan Bahasa .
Jalankan file batch berikut (yang mengasumsikan dd / mm / yyyy dan jj: mm: dd ) dan memodifikasi ekstraksi substring (menggunakan: dan ~ karakter) sebagaimana diperlukan untuk mendapatkan bagian yang tepat dari string Tanggal dan Waktu:
Untuk bantuan lebih lanjut tentang ekstraksi substring, ketik
set /?
di command prompt atau lihat halaman ini .sumber
> echo yyyy = %DATE:~6,4%
menghasilkanyyyy = /20/
. Namunecho yyyy = %DATE:~10,4%
adalahyyyy = 2019
.Inilah yang bekerja untuk saya.
sumber
Dengan sedikit penyesuaian saya dapat ini
Hasil:
"test-do_25_06-2015-22_21_51.txt" (Thursday_25th_June_2015-22:21.51)
sumber
%DATE%
~Ddd MM/DD/YYYY
, sedangkan yang ini mengasumsikan Wilayah non-AS, di mana%DATE%
~DD/MM/YYYY
(tanpa hari dalam seminggu). Dan yang ini berbeda dari jawaban Karan karena yang ini salah - pertanyaannya meminta YYYYMMDD; jawaban ini memberi DD_MM – YYYY.Maaf atas keterlambatan ...
Satu-satunya cara yang dapat diandalkan untuk mendapatkan tanggal yang sesuai apapun pengaturan regional adalah solusi dari foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
sumber
Saya pikir ini meningkatkan jawaban Rogers @Nick sedikit.
EX: dengan locat Jerman (de_DE) ada spasi putih terkemuka pada jam di bawah 10.
Saya juga ingin memimpin nol pada jam tersebut. "echo -! ^ _ hh! -" memberikan "09" bukan hanya "9"
jadi saya memecahkan kode menjadi dua bagian untuk bacaan yang lebih baik. contoh ini harus cocok dengan lebih banyak lokal.
+ bonus: _ms = milidetik atau apa pun dua digit terakhirnya (-;
komentar: terkadang JAM perlu melarikan diri, lihat di dalam kode
output: gema fullTime = 15062018-10182821
sumber
jawaban terpendek (paling fleksibel?) adalah sesuai dengan skrip TimeStamp.cmd berikut yang hanya berisi tiga baris kode (tidak termasuk komentar, dll.) ...
Perhatikan kebutuhan untuk menggunakan %% daripada% untuk variabel dalam pernyataan FOR dalam file batch
... hasil eksekusi (baris kosong dan komentar dihapus) ...
sumber