क्या कोई मुझे विंडोज बैच फ़ाइल में टाइमर जोड़ने का तरीका बता सकता है? मुझे उस समय को ट्रैक करने की ज़रूरत है जब मेरा बैच शुरू से चलता है।विंडोज बैच फ़ाइल में टाइमर
उत्तर
जहां तक मुझे पता है कि कोई स्पष्ट 'टाइमर' कमांड नहीं है जिसे आप बैच फ़ाइलों में उपयोग कर सकते हैं - हालांकि एक काफी सरल समाधान है। बैच फ़ाइल के अंत में आपके बैच फ़ाइल के शीर्ष पर वर्तमान समय (प्रारंभ समय) रिकॉर्ड करें वर्तमान समय (समाप्ति समय) रिकॉर्ड करें और फिर दोनों की तुलना करें। कुछ इस तरह यह करना चाहिए (यह ज्यादा जटिल प्रतीत होता है, लेकिन यह समय की सबसे quirks संभालती):
:: Store start time
set StartTIME=%TIME%
set H=%StartTIME:~0,2%
if "%H:~0,1%"==" " set H=%H:~1,1%
if "%H:~0,1%"=="0" set H=%H:~1,1%
set M=%StartTIME:~3,2%
if "%M:~0,1%"=="0" set M=%M:~1,1%
set S=%StartTIME:~6,2%
if "%S:~0,1%"=="0" set S=%S:~1,1%
set U=%StartTIME:~9,2%
if "%U:~0,1%"=="0" set U=%U:~1,1%
)
set /a Start100S=%H%*360000+%M%*6000+%S%*100+%U%
::
:: Add your script functionality here
::
:: Get the end time
set StopTIME=%TIME%
set H=%StopTIME:~0,2%
if "%H:~0,1%"==" " set H=%H:~1,1%
if "%H:~0,1%"=="0" set H=%H:~1,1%
set M=%StopTIME:~3,2%
if "%M:~0,1%"=="0" set M=%M:~1,1%
set S=%StopTIME:~6,2%
if "%S:~0,1%"=="0" set S=%S:~1,1%
set U=%StopTIME:~9,2%
if "%U:~0,1%"=="0" set U=%U:~1,1%
)
set /a Stop100S=%H%*360000+%M%*6000+%S%*100+%U%
:: Test midnight rollover. If so, add 1 day=8640000 1/100ths secs
if %Stop100S% LSS %Start100S% set /a Stop100S+=8640000
set /a TookTime=%Stop100S%-%Start100S%
echo Started: %StartTime%
echo Stopped: %StopTime%
echo Elapsed: %TookTime:~0,-2%.%TookTime:~-2% seconds
वैकल्पिक रूप से # 1: Windows सर्वर 2k3 संसाधन किट timeit.exe भी शामिल है। आप अपनी स्क्रिप्ट के लिए विभिन्न प्रदर्शन आंकड़े प्रदर्शित करने के लिए इसका उपयोग कर सकते हैं।
वैकल्पिक रूप से # 2: आप स्क्रिप्ट ऊपर तैनात तुलना में बहुत सरल जाकर यह कर सकता है:
echo %time%
::
:: Your script functionality
::
echo %time%
बहरहाल, यह आप निष्पादन समय सेकंड में नहीं देंगे।
बीता हुआ समय की गणना करने के कोड पुनर्स्थापन:, गणना में
- कम कोड, .1 सेकंड से कम समय बीता हुआ समय के लिए
- प्रदान की गद्दी
- लेबल का उपयोग यह बुला कई बार अनुमति देने के लिए, और टाइमर कोड समूह करने के लिए।
पुन: प्रयोज्य कोड:
:StartTimer
:: Store start time
set StartTIME=%TIME%
for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StartTIME: =0%`) do set /a Start100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100
goto :EOF
:StopTimer
:: Get the end time
set StopTIME=%TIME%
for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo %StopTIME: =0%`) do set /a Stop100S=1%%f*360000+1%%g*6000+1%%h*100+1%%i-36610100
:: Test midnight rollover. If so, add 1 day=8640000 1/100ths secs
if %Stop100S% LSS %Start100S% set /a Stop100S+=8640000
set /a TookTime=%Stop100S%-%Start100S%
set TookTimePadded=0%TookTime%
goto :EOF
:DisplayTimerResult
:: Show timer start/stop/delta
echo Started: %StartTime%
echo Stopped: %StopTime%
echo Elapsed: %TookTime:~0,-2%.%TookTimePadded:~-2% seconds
goto :EOF
कॉलिंग कोड:
call :StartTimer
::
:: Add your script functionality here
::
call :StopTimer
call :DisplayTimerResult
pause
call :StartTimer
::
:: Add more script functionality here
::
call :StopTimer
call :DisplayTimerResult
goto :EOF
नोट "1" -prefix अष्टाधारी मूल्यों के रूप में शून्य गद्देदार मूल्यों की व्याख्या त्रुटियों से बचने के (08 और 09) , और उचित स्थिर के साथ सुधार।
for /f "usebackq tokens=1-4 delims=:., " %%f in (`echo.%StartTIME%`) do set TempTIME=%%f %%g %%h %%i
for /f "usebackq tokens=1-4" %%f in (`echo %TempTIME: 0= %`) do set /a Start100S=%%f*360000+%%g*6000+%%h*100+%%i
आपको यह एक (छोटा ..)
@echo off
:loop
set TA=%time% & echo %time%--A
echo Put Your Code Here...
set TB=%time% & echo %time%--B
call:Timediff %TA% %TB% Tab
for /f "tokens=1-3 delims=:" %%a in ("%TAB%")do echo Time difference: %%a hours %%b minutes and %%c seconds
pause
goto:loop
:: /* ---------- Timediff ---------------
:Timediff [%t1%] [%t2%] [par|0]
for %%a in (+%1 +%2 +%3)do if "%%a"=="+" echo No Parameters!!&exit/b
setlocal enabledelayedexpansion
:timediff_1
set P2=%~1&set "P2=!P2::=!"
set/a P2=%P2:.=%-4000*(%P2:~,4%+60*%P2:~,2%)
if not "%3"=="" set P1=!P2!&shift&goto:timediff_1
if !P2! geq !P1! (set/a df=!P2!-!P1!) else set/a df=!P2!-!P1!+8640000
set/a h=df/360000,m=df%%360000/6000,s=df%%6000/100,pt=df%%100
if %pt% leq 9 set pt=0%pt%
endlocal&if %2.==0. (echo\%h%:%m%:%s%.%pt%) else set %2=%h%:%m%:%s%.%pt%&goto:eof
:: ------------- Timediff ------------- */
का उपयोग कर रहा हूँ यह काम नहीं किया! –
for
बयान निम्नलिखित की तरह कुछ होगा
संरचना इस तरह अपने कार्यक्रम:
@echo off
setlocal enabledelyedexpansion
set T[1]=%time%
::
:: Your program goes here...
::
set T[2]=%time%
call TIMER
यहाँ TIMER.BAT कार्यक्रम के लिए कोड है। इसे अपने पथ में कहीं अलग फ़ाइल के रूप में सहेजें।
for /l %%t in (1,1,2) do for /f "tokens=1-4 delims=:." %%a in ("!T[%%t]!") do (
set "T[%%t]=!T[%%t]: =0!"
set "h[%%t]=%%a" & if "!h[%%t]:~0,1!"=="0" set "h[%%t]=!h[%%t]:~1!"
set "m[%%t]=%%b" & if "!m[%%t]:~0,1!"=="0" set "m[%%t]=!m[%%t]:~1!"
set "s[%%t]=%%c" & if "!s[%%t]:~0,1!"=="0" set "s[%%t]=!s[%%t]:~1!"
set "c[%%t]=%%d" & if "!c[%%t]:~0,1!"=="0" set "c[%%t]=!c[%%t]:~1!"
set /a T[%%t]=!h[%%t]!*360000+!m[%%t]!*6000+!s[%%t]!*100+!c[%%t]!
)
set /a c=!T[2]!-!T[1]!
set /a h=!c!/360000 & set /a c%%=360000 & if !h! lss 10 set "h= !h!"
set /a m=!c!/6000 & set /a c%%=6000 & if !m! lss 10 set "m=0!m!"
set /a s=!c!/100 & set /a c%%=100 & if !s! lss 10 set "s=0!s!"
echo !h!:!m!:!s!.!c!
सेकंड में विलुप्त समय के साथ एक न्यूनतम संस्करण।
@set /A _tic=%time:~0,2%*3600^
+%time:~3,1%*10*60^
+%time:~4,1%*60^
+%time:~6,1%*10^
+%time:~7,1% >nul
:: actual script
@set /A _toc=%time:~0,2%*3600^
+%time:~3,1%*10*60^
+%time:~4,1%*60^
+%time:~6,1%*10^
+%time:~7,1% >nul
@set /A _elapsed=%_toc%-%_tic
@echo %_elapsed% seconds.
लेकिन मेरे पास डेढ़ घंटे की स्क्रिप्ट है। सेकेंड के बजाय मिनटों के लिए यह कैसे किया जाएगा? क्षमा करें अगर आपके लिए बहुत आसान लगता है! –
धन्यवाद @ मिगोनज़लवार, यह वही था जो मुझे चाहिए था। उत्सुकता के लिए, आप मिनटों और सेकंड के लिए एक समय में दो अंक पुनर्प्राप्त नहीं कर सकते हैं क्योंकि एक अग्रणी 0 संख्या को ऑक्टल के रूप में व्याख्या करने का कारण बनता है। यह घंटों तक काम करता है क्योंकि एक अग्रणी स्थान है, 0 नहीं। और आपको "> nul" से पहले स्थान की आवश्यकता है क्योंकि (उदाहरण के लिए) "2> nul" का अर्थ है stderr को रीडायरेक्ट करना। (ओह, और पीछे की ओर^प्रतीकों ने नई लाइन से बच निकला।) – yoyo
यह टाइमर बहुत सटीक है, और 5 से नीचे गिना जाता है। मुझे यकीन नहीं है कि आप इसे अपने कोड में कैसे जोड़ सकते हैं। नोट: यह बहुत मूल बैच टाइमर है, और अन्य उत्तर शायद बेहतर हैं, लेकिन यह सरल कोड के साथ अपने बैच टाइमर को डिज़ाइन करने का एक तेज़ तरीका है।
@echo off
cls
set /a time=5
:hi
cls
echo Time:%time%
ping localhost -n 2 >nul
set /a time=%time%-1
if %time%==0 (
goto timeup
)else goto :hi
:timeup
cls
echo Time is up!
pause
भी समय इस टाइमर पर शुरू होता है को बदलने के लिए, बस बदलने set /a time=5
set /a time=(whatever time you want to start at)
धन्यवाद ............... यह मेरी समस्या को हल करता है –
- 1. विंडोज बैच फ़ाइल && ऑपरेटर
- 2. विंडोज बैच फ़ाइल
- 3. विंडोज बैच फ़ाइल
- 4. विंडोज बैच फ़ाइल (बीएटी)
- 5. विंडोज बैच फ़ाइल
- 6. विंडोज बैच फ़ाइल
- 7. विंडोज बैच फ़ाइल -
- 8. विंडोज बैच फ़ाइल PHP फ़ाइल
- 9. विंडोज बैच फ़ाइल में सटीक स्ट्रिंग इको?
- 10. विंडोज बैच
- 11. विंडोज बैच
- 12. बैच फ़ाइल
- 13. विंडोज बैच फ़ाइल फ़ाइलों और फ़ोल्डरों
- 14. विंडोज बैच फ़ाइल से कॉलिंग पावरहेल cmdlets
- 15. विंडोज बैच - एक छिपा फ़ाइल को नष्ट
- 16. विंडोज बैच फ़ाइल: अंतिम प्रक्रिया का पीआईडी?
- 17. mysqldump कमांड के लिए विंडोज बैच फ़ाइल
- 18. बैच फ़ाइल
- 19. बैच फ़ाइल
- 20. विंडोज बैच स्क्रिप्ट
- 21. विंडोज बैच स्क्रिप्ट
- 22. बैच फ़ाइल
- 23. बैच फ़ाइल के बाद चल रही बैच फ़ाइल बैच फ़ाइल
- 24. विंडोज बैच स्क्रिप्ट
- 25. विंडोज बैच फ़ाइलें: लूप
- 26. बैच फ़ाइल में विंडोज 7 32-बिट प्रोग्राम फ़ाइलें पथ
- 27. विंडोज बैच (cmd.exe) में फ़ाइल से पर्यावरण चर पढ़ें
- 28. विंडोज बैच फ़ाइल: किसी अन्य निर्देशिका में निष्पादन योग्य कॉलिंग
- 29. विंडोज x64 और "पथ में ब्रांडेसिस" बैच फ़ाइल समस्या
- 30. विंडोज सेवा के रूप में बैच फ़ाइल चलाएं
को डॉस के किस संस्करण का उपयोग कर रहे हैं? – TZHX
संस्करण 5.2.379 – JVIDIN