2013-01-11 33 views
7

Tôi đang cố gắng so sánh thời gian hệ thống hiện tại với thời gian đã đặt. Vui lòng xem bên dưới:So sánh thời gian tập tin hàng loạt của Windows

set currentTime=%TIME% 
set flag=false 

if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true 

if %flag%==true (


) else (

) 

Nếu thời gian từ 7 giờ sáng đến 10:45 tối thì hãy thực hiện hành động này bằng cách khác.

Sự cố này không hoạt động. Các kết quả liên tục khác nhau. Tôi nghĩ rằng điều đó liên quan đến việc so sánh của tôi với nghĩa là: 07:00

Trả lời

9

Lý do tập lệnh của bạn không thành công là thời gian trước 10 giờ sáng. Khi thời gian nhỏ hơn 10, biến% Time% trả về định dạng này: " H:MM:SS:ss". Tuy nhiên, khi 10 hoặc sau biến số %Time% trả về định dạng này: "HH:MM:SS:ss".

Lưu ý số thiếu 0 tại thời điểm bắt đầu trước khi số 10 bị thiếu. Điều này gây ra một vấn đề so sánh vì lô đang thực hiện so sánh chuỗi và không phải là so sánh số.

07:00 nhỏ hơn 6:00 do thực tế giá trị ASCII là 6 lớn hơn giá trị ASCII là 0.

Giải pháp yêu cầu bạn thêm một số không vào đầu thời gian nếu trước 10 giờ sáng.

Chỉ cần thay đổi

set currentTime=%TIME% 

Into

set "currentTime=%Time: =0%" 

này sẽ thay thế bất kỳ khoảng trống trong thời gian với số không.

+0

Tuyệt vời! Điều đó có ý nghĩa. Cảm ơn bạn vì sự giúp đỡ – Brian

Các vấn đề liên quan