मैं कहना है कि यह नहीं किया जा सकता जा रहा था, लेकिन बैच भाषा एक बहुत अधिक शक्तिशाली की तुलना में यह करने के लिए ऋण दिया जाता है, तो यहाँ है TIMER.BAT का एक सरल कार्यान्वयन है। रिकॉर्ड के लिए, पैक्स मुझे स्ट्रिंग बंटवारे दिखा एक जवाब से हरा दिया, जबकि मैं लगभग नगण्य था, और जोहानिस Rossel मापा क्षेत्र के बाहर गणित चलती सुझाव:
@echo off
setlocal
rem Remeber start time. Note that we don't look at the date, so this
rem calculation won't work right if the program run spans local midnight.
set t0=%time: =0%
rem do something here.... but probably with more care about quoting.
rem specifically, odd things will happen if any arguments contain
rem precent signs or carets and there may be no way to prevent it.
%*
rem Capture the end time before doing anything else
set t=%time: =0%
rem make t0 into a scaler in 100ths of a second, being careful not
rem to let SET/A misinterpret 08 and 09 as octal
set /a h=1%t0:~0,2%-100
set /a m=1%t0:~3,2%-100
set /a s=1%t0:~6,2%-100
set /a c=1%t0:~9,2%-100
set /a starttime = %h% * 360000 + %m% * 6000 + 100 * %s% + %c%
rem make t into a scaler in 100ths of a second
set /a h=1%t:~0,2%-100
set /a m=1%t:~3,2%-100
set /a s=1%t:~6,2%-100
set /a c=1%t:~9,2%-100
set /a endtime = %h% * 360000 + %m% * 6000 + 100 * %s% + %c%
rem runtime in 100ths is now just end - start
set /a runtime = %endtime% - %starttime%
set runtime = %s%.%c%
echo Started at %t0%
echo Ran for %runtime%0 ms
आप गणित को सरल बनाने और एक छोटे से अधिक हो सकता है दूसरे भाग के 100 वें के साथ परेशान न होकर इसकी समग्र सटीकता के बारे में ईमानदार।यहाँ यह कार्रवाई में है, यह सोचते हैं कि आप एक नींद आदेश या कुछ अन्य समय नुक़सान है:
C:> TIMER SLEEP 3
Script took 3000 ms to complete
C:>
संपादित करें: के रूप में एक टिप्पणी में सुझाव दिया मैं कोड और इसके विवरण को संशोधित किया।
मुझे लगता है कि जब एनटी टीम ने COMMAND.COM को CMD.EXE के साथ बदल दिया, तो उन्होंने सोचा कि वे इसे बहुत अलग बनाने से दूर नहीं होंगे। लेकिन असल में, यह लगभग पूरी तरह से नई भाषा है। एक्सटेंशन सक्षम होने पर पुराने पसंदीदा आदेशों में से कई में नई सुविधाएं हैं।
उनमें से एक SETLOCAL
है जो कॉलर के पर्यावरण को संशोधित करने से चर को रोकता है। एक और SET /A
है जो आपको अंकगणित की एक उल्लेखनीय राशि देता है। मैंने जिस सिद्धांत की चाल का उपयोग किया है वह नया सबस्ट्रिंग निष्कर्षण वाक्यविन्यास है जहां %t:~3,2%
का मतलब है कि t
नामक चर के मान में ऑफ़सेट 3 से शुरू होने वाले दो वर्ण हैं।
असली शॉकर के लिए, सेट के पूर्ण विवरण पर एक नज़र डालें (एक संकेत पर SET /?
आज़माएं) और यदि यह आपको डराता नहीं है, तो FOR /?
पर ध्यान दें और ध्यान दें कि यह फ़ाइलों से टेक्स्ट को पार्स कर सकता है ...
संपादित करें 2: समय 08
या 09
टिप्पणी में फ्रेंकी द्वारा रिपोर्ट युक्त क्षेत्रों के फिक्स्ड गलत हैंडलिंग। कुछ चीजें tweaked, और कुछ टिप्पणियां जोड़ा।
ध्यान दें कि यहां एक चमकदार निगरानी है कि शायद मैं ठीक नहीं कर रहा हूं। यदि काम समाप्त होने से अलग दिन पर शुरू होता है तो यह काम नहीं करेगा। यही है, यह दिन के समय से संबंधित कुछ गणित करेगा और एक अंतर की रिपोर्ट करेगा, लेकिन अंतर का मतलब अधिक नहीं होगा।
कम से कम इस मामले के बारे में चेतावनी देने के लिए इसे ठीक करना आसान है। सही काम करने के लिए इसे ठीक करना कठिन है।
संपादित करें 3: फिक्स्ड त्रुटि जहां% h% एकल अंकों के घंटों के लिए ठीक से सेट नहीं है। यह% 9% लौटने के कारण "9: 01: 23.45" है। अंतरिक्ष पर ध्यान दें। % समय का उपयोग करना: = 0% अंतरिक्ष को एक अग्रणी शून्य के साथ बदल देता है और% h% सही ढंग से सेट किया जाएगा। यह त्रुटि केवल तभी हुई जब एक स्क्रिप्ट एक एकल अंक से अगले तक चला।
shouldn ' क्या आप कुछ सामान करने के बाद एंडटाइम सेट करते हैं? क्या यह एक टाइपो है? –
अच्छी तरह से, आप बस "समय ./myscript" – mpen
@mark, एक स्टॉक विंडोज स्थापना में कर सकते हैं, समय सीएमडी.एक्सईई में बनाया गया एक आदेश है जो दिन के वर्तमान समय को सेट या प्रदर्शित करता है। – RBerteig