อันที่จริงการคำนวณเวลาประทับเป็นความเจ็บปวด การปรับชั่วโมงเป็น UTC อาจส่งผลให้มีวันที่แตกต่างกันซึ่งหมายความว่าคุณต้องกังวลเกี่ยวกับจำนวนวันในเดือนและคุณอาจต้องกังวลเกี่ยวกับปีอธิกสุรทิน
WMIC ไม่มีบทบัญญัติในตัวเพื่อจัดรูปแบบการประทับเวลาเป็น UTC และแบทช์ไม่สนับสนุนการจัดการเลขคณิตวันที่ / เวลาอย่างแน่นอน
ฉันได้เขียน โปรแกรมอรรถประโยชน์ที่เรียกว่า JREN.BAT ที่สามารถแก้ปัญหาของคุณได้อย่างง่ายดาย มันถูกเขียนเพื่อให้สามารถเปลี่ยนชื่อไฟล์ / โฟลเดอร์โดยใช้นิพจน์ทั่วไป แต่มันมีฟังก์ชั่นพิเศษที่สามารถแก้ปัญหานี้ได้
JREN.BAT เป็นสคริปต์บริสุทธิ์ (ชุดผสม / JScript) ที่ทำงานบนเครื่อง Windows ทุกเครื่องตั้งแต่ XP เป็นต้นไป - ไม่ต้องใช้ไฟล์ exe ของ บริษัท อื่น เอกสารฉบับเต็มสามารถทำได้โดยการดำเนินการ jren /?
จากพรอมต์คำสั่ง (หรือ jren /??
สำหรับความช่วยเหลือแบบเพจ)
ต่อไปนี้จะให้ฟังก์ชันการทำงานเดียวกับสคริปต์ของคุณยกเว้นว่าจะแสดงการประทับเวลาอย่าง UTC อย่างถูกต้อง
@echo off
for /f "delims=" %%A in (
'jren "^.*" "ts({dt:'modified',tz:0})" /j /list /p "%~dp0" /fm %1'
) do set "ts=%%A"
echo %ts%
ผลลัพธ์จะอยู่ในรูปแบบ ISO 8601 โดยไม่มีเครื่องหมายวรรคตอนซึ่งจะเรียงลำดับตามลำดับเหตุการณ์ได้อย่างถูกต้องโดยใช้ความหมายของสตริง สิ่งที่ต้องการ 20161006T155621.746+0000
.
คุณสามารถเพิ่มตัวเลือก fmt: เข้ากับการโทร ts () เพื่อจัดรูปแบบการประทับเวลาในแบบที่คุณเห็นว่าเหมาะสม ใช้ jren /?ts()
เพื่อรับความช่วยเหลืออย่างสมบูรณ์เกี่ยวกับตัวเลือกทั้งหมดที่มีสำหรับการทำงานกับการประทับเวลา
มันง่ายมากที่จะใช้ JREN เพื่อจัดทำรายการไดเรกทอรีแบบเต็มด้วยเวลา UTC
รายการต่อไปนี้แสดงเวลาแก้ไขล่าสุดขนาดไฟล์และชื่อไฟล์สำหรับไฟล์. txt ทั้งหมดที่ขึ้นต้นด้วย t
ในไดเรกทอรีปัจจุบัน
D:\test>jren "^.*" "ts({dt:'modified',tz:0,fmt:'{iso-dt} {iso-tm}'})+size(' ')+' '+$0" /j /list /fm t*.txt
2015-06-22 19:11:22.134 74 temp1.txt
2015-06-22 19:11:22.259 0 temp2.txt
2015-06-22 19:11:22.384 0 temp3.txt
2016-09-07 15:20:08.146 10376 tempfile.txt
2016-10-06 15:56:21.746 14 test.txt
2015-06-22 19:11:23.600 342 text2.txt
2015-06-22 19:11:23.741 288 textfile1.txt
2015-06-22 19:11:23.866 144 textfile2.txt
2015-10-19 19:12:16.441 707 TL.txt
2016-01-13 17:35:17.505 1030 tl64.txt
2016-01-13 17:36:48.501 974 tl64_2.txt
2016-01-13 17:45:16.383 943 tl64_3.txt
2016-01-13 17:37:21.308 707 tl_1.txt
2016-01-13 17:37:30.356 707 tl_2.txt
2016-01-13 17:45:50.469 707 tl_3.txt
2015-06-22 19:11:24.006 42 tmp.txt
2015-06-22 19:11:24.427 541553 toc-z.txt
2015-08-31 20:59:25.202 17442083 tree.txt
2015-06-22 19:11:24.583 304 tsc_call_layout.txt
JREN ใช้ WMI เพื่อรับการประทับเวลาที่แก้ไขล่าสุดซึ่งค่อนข้างช้า คุณอาจใช้งานได้ทั้งนี้ขึ้นอยู่กับการตั้งค่าภาษาของคุณ fsomodified
, แทน modified
เพื่อรับการประทับเวลาโดยใช้ FileSystemObject สิ่งนี้เร็วกว่ามาก แต่ก็ไม่ได้ให้มิลลิวินาทีและใช้ได้เฉพาะในกรณีที่รูปแบบสตริงการประทับเวลาภาษาของคุณในรูปแบบที่สามารถตีความได้โดยวัตถุวันที่ JScript
D:\test>jren "^.*" "ts({dt:'fsomodified',tz:0,fmt:'{iso-dt} {hh}:{nn}:{ss}'})+size(' ')+' '+$0" /j /list /fm t*.txt
2015-06-22 19:11:22 74 temp1.txt
2015-06-22 19:11:22 0 temp2.txt
2015-06-22 19:11:22 0 temp3.txt
2016-09-07 15:20:08 10376 tempfile.txt
2016-10-06 15:56:21 14 test.txt
2015-06-22 19:11:23 342 text2.txt
2015-06-22 19:11:23 288 textfile1.txt
2015-06-22 19:11:23 144 textfile2.txt
2015-10-19 19:12:16 707 TL.txt
2016-01-13 18:35:17 1030 tl64.txt
2016-01-13 18:36:48 974 tl64_2.txt
2016-01-13 18:45:16 943 tl64_3.txt
2016-01-13 18:37:21 707 tl_1.txt
2016-01-13 18:37:30 707 tl_2.txt
2016-01-13 18:45:50 707 tl_3.txt
2015-06-22 19:11:24 42 tmp.txt
2015-06-22 19:11:24 541553 toc-z.txt
2015-08-31 20:59:25 17442083 tree.txt
2015-06-22 19:11:24 304 tsc_call_layout.txt