Saya mencoba membuat file zip dari skrip batch. Saya perlu diberi nama seperti archive_.zip
Sayangnya, ini tidak berfungsi pada sistem dengan tanggal yang diformat seperti y / m / d karena garis miring:
zip some_options "archive_%DATE%.zip"
The %DATE%
variabel memperluas untuk sesuatu seperti
Mon 09/28/2009
Saya memiliki akses ke paket gnuwin32, jadi saya bisa menggunakan, katakanlah, sed
untuk mengganti spasi dan garis miring dengan garis putus-putus . Masalahnya adalah, bagaimana saya akan menggunakan output sed
untuk membuat nama file arsip zip?
Di Unix (bash), seseorang dapat menggunakan tanda kutip kembali untuk mengevaluasi di tempat perintah dan menggunakan hasilnya di perintah lain, sesuatu seperti:
zip [...] archive_`echo %DATE% | sed -e s/.../.../`.zip
Apakah ada yang serupa di Windows?
Atau mungkin ada cara untuk mengatur variabel ke nilai yang dikembalikan sed
dan menggunakannya untuk membangun nama file?
sumber
%date:~-10,2%-%date:~-7,2%-%date:~-4,4%
:!Saya selalu menggunakan:
Maka CDate akan menjadi Sat02182012. Jika Anda ingin membuatnya lebih mudah, atur CDate ke %% d - %% b - %% c sehingga akan menjadi 2012-02-18
Untuk membuat folder dan file ramah tanggal dan waktu.
sumber
Saya telah mengirim jawaban untuk pertanyaan yang sangat mirip di sini . Pemisahan tanggal di bidang dilakukan dalam 1 baris, alih-alih beberapa baris dalam jawaban harrymc.
Bagian yang menarik adalah:
Dan peringatan itu masih relevan:
sumber
yang
/=-
menggantikan orang/
dengan tanda minus.sumber
Sedikit kode yang mengerikan ini harus melakukan sesuatu seperti yang Anda inginkan
Jika Anda mengubah nama file dengan tepat.
sumber
echo %date:~6,4%%date:~3,2%%date:~0,2%
kembali9-289-20
pada mesin saya karena saya memiliki tanggal yang ditetapkan untuk menggunakan yyyy-MM-dd (jadi hari ini adalah 2009-09-28).Karena pertanyaan Anda ditandai sebagai Windows, saya menemukan solusi ini yang berfungsi dalam file .bat lama yang baik:
"File Batch Windows (.bat) untuk mendapatkan tanggal saat ini dalam format MMDDYYYYY" ,
dan mungkin dapat disesuaikan dengan kasus Anda:
ini tidak melakukan apa-apa selain mengatur variabel% date menjadi todays date dalam format MMDDYYYY sehingga dapat dipanggil nanti dalam skrip.
Sunting
Ditemukan sintaks yang lebih baik. Mengingat tanggal saya hari ini "Senin 28/09/2009":
set hari =% Tanggal: ~ 0,2%
set bulan =% Tanggal: ~ 7,2%
set tahun =% Tanggal: ~ 10,4%
sumber
versi cmd.exe murni dalam kombinasi dengan gnuwin32-'date ':
sumber
bagaimana dengan menggunakan cscript + vbasic:
sebut itu via
sumber
Untuk / f "token = 1,2,3,4,5 delims = /." %% a in ('date / T') lakukan set CDate = %% d - %% b - %% c
@echo data =% CDate%
Ini adalah Tahun-Bulan-Hari yang paling umum sekarang hari
sumber
Solusi apa pun yang menggunakan salah satu
%DATE%
atau output daridate /t
kemungkinan akan rusak jika pengguna telah memodifikasi pengaturan regionalnya. Sebagai contoh, saya telah mengatur format "tanggal pendek" saya"yyyy-MM-dd"
, jadi saya memiliki nilai yang%DATE%
sama dengan"2012-02-18"
, dandate /t
menghasilkan output yang sama. (Ini untuk Windows 7; Saya kira itu sama untuk versi Windows sebelumnya.)Buat file batch dan kemudian jalankan.
Karena Anda memiliki
date
perintah GNU yang tersedia, Anda dapat melakukan sesuatu seperti ini:tmp.bat
akan mengandung sesuatu seperti:Perhatikan bahwa ini dibuat
tmp.bat
di direktori saat ini, yang mungkin menjadi masalah; mungkin lebih baik untuk dibuat%TEMP%\tmp.bat
. Saya juga tidak menghapus file sesudahnya; itu cukup mudah untuk dilakukan.date +FORMAT
memungkinkan Anda menentukan format output daridate
perintah, mirip denganprintf
string format; lihat dokumentasi tanggal coreutils untuk perinciannya. Format dapat menyertakan teks arbitrer, jadi dalam hal ini Anda bahkan tidak perlu menggunakansed
.sumber
Saya kira, jika Anda menggabungkan bit semua orang Anda mendapatkan sesuatu yang bekerja untuk Anda. Ini ada pada sistem Windows 2003 untuk memberi saya gambaran proses yang berjalan sebagai respons terhadap pemicu dari monitor kinerja:
File output dinamai dalam satu string tanpa pembatas.
sumber
Harus bekerja
Di sisi lain - mungkin Anda memiliki
date
perintah yang tersedia (saya tidak tahu Windows). Jika ya, maka lakukan saja:sumber
tidak yakin apakah itu cocok untuk Anda, tetapi kode saya
sumber