मिलीसेकंड में फ़ाइल का निर्माण समय प्राप्त करें


13

क्या उच्च सटीकता में खिड़कियों में एक फ़ाइल का निर्माण समय प्राप्त करने का एक तरीका है? मैं मिलीसेकंड में एक mp4-वीडियो का निर्माण समय प्राप्त करना चाहता हूं। क्या यह संभव है?


मुझे पूछना है कि आपको इस सटीकता की आवश्यकता क्यों है?
Moab

1
मैं एक वीडियो के साथ एंड्रॉइड डिवाइस पर कुछ सेंसर डेटा रिकॉर्ड करता हूं। मैंने खुद से सेंसर लॉगिंग लिखी और प्रत्येक सेंसर मान के साथ सिस्टम समय लॉग किया। वीडियो रिकॉर्ड करने के लिए मैं मानक कैमरा गतिविधि का उपयोग करता हूं। एक पीसी को डेटा भेजने के बाद मैं इसका विश्लेषण करना चाहता हूं। सेंसर डेटा के साथ वीडियो को मर्ज करने के लिए मुझे जानना होगा कि वीडियो कब शुरू हुआ। सेकंड थोड़ा बहुत मोटे हैं इसलिए मैं वीडियो के शुरुआती समय के लिए एक सटीक तरीका ढूंढ रहा हूं।
फिल

3
नोट: यदि आपको दो डेटा स्ट्रीम के बीच उस तरह के संबंध की आवश्यकता है, तो आमतौर पर स्ट्रीम में एक पंजीकरण सिग्नल डालना आवश्यक होता है (जैसे फिल्मों में इस्तेमाल किए गए पुराने क्लैपबोर्ड को निर्देशक "एक्शन" कहते हैं। क्लैप एक दृश्य क्यू और ऑडियो था। क्यू, बाद में दो या अधिक धाराओं को सिंक करने की अनुमति देता है)। कुछ स्थितियों में, फ़ाइल को कर्नेल मोड में बनाने (और टाइमस्टैम्प रिकॉर्ड करने) के बीच का समय और यह जानने के लिए अपनी प्रक्रिया को जागृत करने के लिए कि यह आपके डेटा के लिए आपके द्वारा सहिष्णुता की तुलना में वास्तव में अधिक उपयोग करने के लिए फ़ाइल हैंडल है।
Cort Ammon

जब आप एंड्रॉइड से अपना सामान कहीं और कॉपी करते हैं, तो सुनिश्चित करें कि सभी कॉपी टूल टाइमस्टैम्प परिशुद्धता को संरक्षित करते हैं। ध्यान दें कि कई कॉपी टूल ctimeकॉपी किए जाने वाले समय को कॉपी बना देंगे ।
पीटर कॉर्डेस

1
खिड़कियों पर, मैं statसभी 3 टाइमस्टैम्प प्राप्त करने के लिए cygwin / mingw का उपयोग करूँगा । बेशक, ऐसा इसलिए है क्योंकि मैं आमतौर पर जीएनयू / लिनक्स का उपयोग करता हूं।
पीटर कॉर्डेस

जवाबों:


23

टाइमस्टैम्प संकल्प

खिड़कियों में एक फाइल का निर्माण टाइमस्टैम्प फाइल सिस्टम पर निर्भर करता है:

  • FAT / VFAT का अधिकतम रिज़ॉल्यूशन 2s है

  • NTFS का अधिकतम रिज़ॉल्यूशन 100 ns है


विकर्म समाधान

आप wmicफ़ाइल निर्माण की तारीख को निकटतम माइक्रोसेकंड में पुनः प्राप्त करने के लिए उपयोग कर सकते हैं ।

उदाहरण:

F:\test>wmic datafile where name="f:\\test\\test.txt" get creationdate | findstr /brc:[0-9]
20150329221650.080654+060

निर्माण 20150329221650.080654+060प्रारूप निम्नलिखित समय के साथ एक टाइमस्टैम्प है:

yyyymmddHHMMSS.xxxxxxsUUU

कहाँ पे:

  • yyyy चार अंकों का वर्ष (9999 के माध्यम से 0000)।

  • mm दो अंकों का महीना (12 के माध्यम से 01)।

  • dd महीने का दो अंकों का दिन (31 के माध्यम से 01)।

  • HH 24-घंटे की घड़ी (23 के माध्यम से 00) का उपयोग करके दिन का दो-अंकीय घंटा

  • MM घंटे में दो अंकों का मिनट (59 के माध्यम से 00)।

  • SS मिनट में सेकंड के दो अंकों की संख्या (59 के माध्यम से 00)।

  • xxxxxx दूसरे में microseconds की छह अंकों की संख्या (999999 के माध्यम से 000000)

  • sप्लस साइन ( +) या माइनस साइन ( -) कोऑर्डिनेटेड यूनिवर्सल टाइम्स (UTC) से पॉजिटिव या नेगेटिव ऑफसेट का संकेत देने के लिए।

  • UUU तीन-अंकीय ऑफ़सेट जो UTC से उत्पन्न होने वाले समय क्षेत्र की मिनटों की संख्या को दर्शाता है।


स्टेट समाधान

आप stat(एक साइबरविन या मिंगव इंस्टॉलेशन से) भी उपयोग कर सकते हैं ।

उदाहरण:

DavidPostill@Hal /f/test
$ stat test.txt | grep Birth
 Birth: 2015-03-29 22:16:50.080654200 +0100

तुलना के लिए dir आउटपुट

F:\test>dir /t:c test.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/03/2015  22:16                32 test.txt
               1 File(s)             32 bytes
               0 Dir(s)  1,798,546,849,792 bytes free

आगे की पढाई


@NateEldredge धन्यवाद, अच्छी तरह से देखा। उत्तर सही किया गया।
DavidPostill

4
सावधानी का एक नोट: सिर्फ इसलिए कि टाइमस्टैम्प में एक उच्च आवृत्ति अंक होता है, जैसे कि 100 नैनोसेकंड का अंक, इसका मतलब यह नहीं है कि घड़ी को 100ns रेंज में एक विश्वसनीय समय स्रोत के रूप में इस्तेमाल किया जा सकता है। यह केवल बताता है कि सामग्री के बहुत सारे बिट्स हैं जो [उम्मीद है] एकरस और मोटे तौर पर "वास्तविक" समय से संबंधित है।
कॉर्ट अमोन

1
MSDN देखें CIM_DATETIME : अपने अंकन में, xxxxxxहै दूसरा (000000 999999 के माध्यम से) में माइक्रोसेकंड के छह अंकों की संख्यामाइक्रो- , यानी 10^-6। बेशक, पहला ट्रिपल मिलि का प्रतिनिधित्व करता है- ( 10^-3): छोटा, गोल नहीं। निकाले गए दूसरे ट्रिपलेट को अपने आप में कुछ भी नहीं दर्शाता है ... हालाँकि, कुछ wmi000wmic OS get LocalDateTime
डेटाटाइम वैल्यूज़

1
धन्यवाद, इस तरह के उत्तर मुझे स्टैक एक्सचेंज से प्यार है :)
फिल

1
@MarisB। आह। उत्तर अपडेट किया गया।
DavidPostill

1

एक चतुर तरीका यहाँ दिखाया गया है: /programming/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

यह WMI का उपयोग WMI के CIM डेटाबेस को क्वेरी करने और FILETIMEएक फाइल से जुड़े ढांचे को वापस करने के लिए कर रहा है।

ऐसे ओपन सोर्स टूल भी हैं जो मीडिया फ़ाइल के मेटाडेटा का निरीक्षण कर सकते हैं, जैसे कि EXIFtool जो डिजिटल कैमरों द्वारा बनाए गए मीडिया के मेटाडेटा को प्रबंधित करने के लिए तैयार है।


1

मुझे यह देखने का तरीका मिला कि इसे मतलाब में कैसे प्राप्त किया जाए:

आप जन साइमन द्वारा लिखित GetFileTime फ़ंक्शन का उपयोग कर सकते हैं । यदि आप अपनी खुद की मेक्सिको फ़ाइलों को संकलित नहीं करना चाहते हैं, तो आप यहाँ संकलित फ़ाइलों को भी डाउनलोड कर सकते हैं

यह विकी (केवल एमएस) का उपयोग करने के समान सटीक नहीं है, लेकिन मेरे उद्देश्य के लिए यह उपयुक्त है।


-3

यह फ़ाइल सिस्टम पर निर्भर करता है : FAT में 2 दूसरा रिज़ॉल्यूशन है, NTFS में सैद्धांतिक रूप से 100 ns रिज़ॉल्यूशन है, लेकिन वास्तविक रिज़ॉल्यूशन 10 ms है । उस ने कहा, इंटरप्ट में डिस्क I / O की तुलना में अधिक प्राथमिकता है, और मुझे यकीन नहीं है कि प्रभाव लेखन-कैशिंग समय के मोहर पर है। मल्टीमीडिया टाइमर सटीकता के लिए अनुकूलित हैं, इसलिए समय को लागू करने का पसंदीदा तरीका होगा।

आप उच्च-रिज़ॉल्यूशन टाइमस्टैम्प को देखने के लिए किसी मौजूदा टूल जैसे XYplorer का उपयोग कर सकते हैं , या XYplorer एमएस दिखा रहा है, आप अपना स्वयं का एप्लिकेशन लिखना पसंद कर सकते हैं। File.GetCreationTime विधि का उपयोग करें ; यह Millisecond संपत्ति के साथ एक DateTime संरचना देता है ।


1
उम ... अशिष्ट नहीं होना है, लेकिन, क्या आपने @ डेविडपोस्टिल का उत्तर पढ़ा है?
td512

2
"NTFS में सैद्धांतिक रूप से 100 ns रिज़ॉल्यूशन है, लेकिन वास्तविक रिज़ॉल्यूशन 10 ms है " - यह लिंक वास्तव में " NT FAT पर , समय बनाएँ 10 मिलीसेकंड का रिज़ॉल्यूशन है " गलत है । इसका मतलब यह नहीं है कि NTFS के पास वह संकल्प है। आप मेरे जवाब से देख सकते हैं कि NTFS पर निकटतम माइक्रोसेकंड का रिज़ॉल्यूशन दिखाया गया है । wmic
DavidPostill

सैद्धांतिक और अधिकतम रिज़ॉल्यूशन के बीच एक अंतर है, एक अच्छी तरह से अधिकतम रिज़ॉल्यूशन को इंगित करता है, दूसरा इंगित करता है, एक औसत रिज़ॉल्यूशन का अधिक।
रामहाउंड

1
@DavidPostill अगर घड़ी हर 10ms पर समय बढ़ाती है, तो एक डेटाइम दायर किया जा सकता है जो 100ns का प्रतिनिधित्व कर सकता है फिर भी केवल 10ms की सटीकता है। ठेठ UtcNow API (उच्च प्रदर्शन काउंटरों के विपरीत जो समय के अंतर को मापने के लिए डिज़ाइन किए गए हैं ) हर 0.5-16ms खिड़कियों पर समय बढ़ाते हैं, इसलिए यह उत्तर काफी प्रशंसनीय है।
कोडइन्चोस

@CodesInChaos हां, लेकिन - "सिस्टम समय को पुनः प्राप्त करने के लिए सबसे अच्छा संसाधन GetSystemTimeAsile.ileTime एपीआई है। यह एक तेज़ एक्सेस एपीआई है जो अपने तर्कों में पर्याप्त रूप से सटीक (100 एनएस यूनिट) मान रखने में सक्षम है।" - मेरे पास विंडोज स्रोत कोड तक पहुंच नहीं है, इसलिए मुझे नहीं पता कि फ़ाइल टाइमस्टैम्प में हेरफेर करते समय हुड के तहत क्या कॉल का उपयोग किया जाता है। हम नहीं जानते कि वास्तविक संकल्प क्या है - यह सिर्फ अनुमान है।
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.