Sử dụng cmd.exe
bộ xử lý lệnh để tạo tên tệp được đánh dấu thời gian để ghi lại kết quả của tác vụ đã lên lịch của bạn
Để xây dựng câu trả lời của những người khác ở đây, có thể bạn muốn tạo một tệp đầu ra có ngày và / hoặc giờ được nhúng vào tên của tệp. Bạn có thể sử dụng cmd.exe
bộ xử lý lệnh để thực hiện việc này cho mình.
Ghi chú: Kỹ thuật này lấy kết quả đầu ra là chuỗi của các biến môi trường Windows nội bộ và cắt chúng ra dựa trên vị trí ký tự. Do đó, các giá trị chính xác được cung cấp trong các ví dụ bên dưới có thể không đúng với vùng Windows bạn sử dụng. Ngoài ra, với một số cài đặt khu vực, một số thành phần của ngày hoặc giờ có thể giới thiệu một khoảng trắng trong tên tệp đã tạo khi giá trị của chúng nhỏ hơn 10. Để giảm thiểu vấn đề này, hãy đặt tên tệp của bạn bằng dấu ngoặc kép để có bất kỳ khoảng trống không mong muốn nào trong tệp tên sẽ không phá vỡ dòng lệnh bạn đang xây dựng. Thử nghiệm và tìm những gì phù hợp nhất với tình huống của bạn.
Hãy biết rằng PowerShell
nó mạnh hơn cmd.exe
. Một cách mạnh mẽ hơn là nó có thể xử lý các vùng Windows khác nhau. Nhưng câu trả lời này là về việc giải quyết vấn đề này bằng cách sử dụng cmd.exe
, không phải PowerShell
, vì vậy chúng tôi tiếp tục.
Sử dụng cmd.exe
Bạn có thể truy cập các thành phần khác nhau của ngày và giờ bằng cách cắt các biến môi trường bên trong %date%
và %time%
như sau (một lần nữa, các giá trị cắt chính xác phụ thuộc vào vùng được định cấu hình trong Windows):
- Năm (4 chữ số):
%date:~10,4%
- Tháng (2 chữ số):
%date:~4,2%
- Ngày (2 chữ số):
%date:~7,2%
- Giờ (2 chữ số):
%time:~0,2%
- Phút (2 chữ số):
%time:~3,2%
- Thứ hai (2 chữ số):
%time:~6,2%
Giả sử bạn muốn tệp nhật ký của mình được đặt tên bằng định dạng ngày / giờ này: " Log_[yyyyMMdd]_[hhmmss].txt
". Bạn sẽ sử dụng như sau:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Để kiểm tra điều này, hãy chạy dòng lệnh sau:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
Tập hợp tất cả lại với nhau, để chuyển hướng cả stdout
và stderr
từ tập lệnh của bạn đến tệp nhật ký có tên ngày và giờ hiện tại, sử dụng có thể sử dụng dòng lệnh sau làm dòng lệnh của bạn:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
Lưu ý việc sử dụng các dấu ngoặc kép xung quanh tên tệp để xử lý các trường hợp một thành phần ngày hoặc giờ có thể giới thiệu một ký tự khoảng trắng.
Trong trường hợp của tôi, nếu ngày / giờ hiện tại là 10/05/2017 9:05:34 AM, dòng lệnh trên sẽ tạo ra như sau:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1