Tôi đã lên lịch sao lưu script làm cho cơ sở dữ liệu kết xuất. Làm cách nào để thêm dấu thời gian ngày vào tên tệp?
Tôi đang nói về Windows và CMD.
Tôi đã lên lịch sao lưu script làm cho cơ sở dữ liệu kết xuất. Làm cách nào để thêm dấu thời gian ngày vào tên tệp?
Tôi đang nói về Windows và CMD.
Câu trả lời:
Trong dấu nhắc lệnh và tệp bó, bạn có thể sử dụng %date%
và %time%
trả về ngày và giờ tương ứng. Ngày hoạt động tốt, nhưng giá trị thời gian được trả lại chứa dấu hai chấm, không hợp lệ để sử dụng trong tên tệp, nhưng có một cách để loại bỏ chúng.
Sử dụng một cái gì đó như:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Điều này sẽ tạo ra một tên tệp như file_172215_01062009.txt
Cập nhật: Các ý kiến dưới đây có các vòng xoắn thú vị về lệnh này cũng như một số vấn đề tiềm ẩn bạn có thể tránh.
%DATE%
và %TIME%
nhận thức được địa phương! Nó có nghĩa là trên một máy châu Âu, bạn nhận được DD.MM.YYYY
. Arrgh.
Sử dụng các biến %DATE%
và / hoặc %TIME
môi trường, tùy ý thay thế các ký tự không được phép trong tên tệp, bằng cách sử dụng %name:from=to%
( %TIME::=%
sẽ xóa tất cả dấu hai chấm).
lý thuyết »echo% ngày% 2009-06-01 lý thuyết »echo% time% 16: 30: 41,46 lý thuyết »echo% time :: =% 163052,17 lý thuyết »echo% time :: =,% 16,30,58,68 lý thuyết »sao lưu tiếng vang-% ngày% -% time :: = -%. zip sao lưu-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
v.v.
Cách đáng tin cậy duy nhất để có được ngày thích hợp cho dù cài đặt khu vực là gì, là giải pháp từ 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
Sử dụng biến% DATE% trong tên tệp.
Cũng có một biến% TIME%, nhưng nó chứa các ký tự không được phép trong tên tệp.
Dưới đây là một ví dụ về việc viết một dòng văn bản vào một tệp mới, trong đó tệp được tạo có ngày và giờ trong tên của nó.
echo "testfile" >> backup-%DATE%.txt