Ngày hiện tại trong tên tập tin


15

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:


21

Trong dấu nhắc lệnh và tệp bó, bạn có thể sử dụng %date%%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.


3
Mẹo nhỏ tuyệt vời. BTW, nếu bạn làm theo cách khác, đó là: "file_20090601_172215", bạn sẽ thấy các tệp theo đúng thứ tự trong một danh sách chữ cái.

5
Bạn cũng có thể sử dụng% time :: =% để xóa dấu hai chấm.
dùng1686

2
Tôi muốn nói rằng chuỗi con ngày tháng sẽ bị hỏng ngay khi ngôn ngữ hệ thống khác với khi tập lệnh được kiểm tra? Nó thậm chí có thể hoạt động cho người dùng thử nghiệm và phá vỡ chức năng chạy tập lệnh do các định dạng hiển thị ngày khác nhau được đặt ...
Oskar Duveborn

3
Coi chừng giờ 0 - 9! CMD đặt ký tự đầu tiên của giờ thành <SPACE>, thay vì 0. Lệnh COPY ở trên sẽ gặp vấn đề nếu bạn không đặt tên tệp đích trong dấu ngoặc kép.
Evan Anderson

2
Lưu ý rằng %DATE%%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.
Pekka

14

Sử dụng các biến %DATE%và / hoặc %TIMEmô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

1
wow, không bao giờ biết về thủ thuật: x = y. Điều đó thật tuyệt.
Eugene Katz

1
+1 cho: = trick, iv'e đã ​​tham gia trò chơi này kể từ MS-Dos 1 và đó là lần đầu tiên Iv'e thấy cái đó. Sẽ tốt hơn nữa nếu bạn có thể thay đổi nhiều ký tự nữa !! :-)
Shawty

Chà, nó chỉ được thêm vào Cmd.exe trong loạt Windows NT ... Và nếu bạn muốn thực hiện nhiều thay đổi, chỉ cần có một chuỗi, set tmp=%tmp:x=y%v.v.
user1686

Nội dung của% DATE% (số lượng hồ sơ, nội dung và đơn đặt hàng) là địa phương cụ thể.
symcbean

4

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

1

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.