एक कमांड लाइन उपकरण समय के लिए सबसे आसान तरीका है


9

कमांड लाइन टूल के समय का सबसे आसान / तेज तरीका क्या है?

यह सुपर सटीक होने की जरूरत नहीं है (+/- सेकंड ठीक है) क्योंकि मैं यह मिनट या यहां तक ​​कि 1 घंटा लेने की उम्मीद करता हूं। और बैच फ़ाइल लिखना भी ठीक है। इसके अलावा, इसे समय पर गणना करने की आवश्यकता नहीं है, बस प्रारंभ समय और समाप्ति समय प्रदर्शित करें।


Stackoverflow पर हो सकता है।
जॉय

2
अगर मुझे यह काम करने के लिए कुछ "प्रोग्राम" करना है ... तो समाधान बहुत जटिल है। इसके लिए कुछ कमांड लाइन टूल या सरल बैच समाधान होना चाहिए, नहीं?
स्लॉफ़लाइफ़

सर्वरफॉल्ट पर अधिक संभावना है।
किरिल वी। ल्याडविंस्की

आमतौर पर ओएस केवल इस बात की परवाह करता है कि उसने कितना सीपीयू समय का उपयोग किया है। नीचे मेरा जवाब वही करेगा जो आप चाहते हैं। मैं सिर्फ जानकारी संग्रहीत करने के लिए एक लॉग फ़ाइल का उपयोग करता हूं।
Axxmasterr

जवाबों:


19

मैं आमतौर पर उपयोग कर रहा हूं

echo.|time & my_command & echo.|time

जब मेरे पास कुछ और नहीं है। यह निम्न की तरह आउटपुट का कारण बनता है:

> प्रतिध्वनि | समय और पिंग -n 4 लोकलहोस्ट> नल & गूंज | समय
वर्तमान समय है: 18: 42: 34,63
नया समय दर्ज करें:
वर्तमान समय है: 18: 42: 37,68
नया समय दर्ज करें:

नहीं सुंदर और पाया जा करने के लिए पाइपिंग द्वारा सुंदर बनाया जा सकता है:

echo.|time|findstr current & ping -n 4 localhost > nul & echo.|time|findstr current

यदि आपने डिफ़ॉल्ट रूप से सक्षम विस्तार में विलंब किया है (या /v:onतर्क के रूप में cmd शुरू किया है), तो आप echo !time!इनपुट पुनर्निर्देशन के साथ बदसूरत हैक्स का सहारा लिए बिना भी उपयोग कर सकते हैं ।

यदि आप एक बैच फ़ाइल का उपयोग करना चाहते हैं, तो आप इसे इस तरह से कर सकते हैं:

@echo Start time: %time%
@%*>nul 2>nul
@echo End time: %time%

मैंने यहाँ stdout और stderr दोनों के लिए nul को पुनर्निर्देशन में जोड़ा है, क्योंकि अन्यथा प्रारंभ और समाप्ति रेखाओं को खोजना मुश्किल हो सकता है। यदि आप को इससे कोई सरोकार नहीं है तो आप इसे हटा सकते हैं।

लेकिन आजकल मैं ज्यादातर TimeThis का उपयोग करता हूं - जो अब तक हटा दिया गया था, दुख की बात है।

PowerShell एक तरीका भी प्रदान करता है:

Measure-Command { my_command }

लेकिन आपको उन चीजों से सावधान रहना होगा जो काम करने वाली निर्देशिका या पुनर्निर्देशन पर निर्भर करती हैं। सही ढंग से काम करने वालों के लिए आपको थोड़ी सी चालाकी की आवश्यकता हो सकती है:

@echo off
setlocal enableextensions

rem Prepare current directory and command line so they
rem can be stuck into a single-quoted PowerShell string.
set "Dir=%CD:'=''%"
set "Cmd=%*"
set "Cmd=%Cmd:'=''%"

rem Prepare command to pass to PowerShell
set Command=
set "Command=&{"
set "Command=%Command%  Set-Location '%Dir%'"
set "Command=%Command%; [Environment]::CurrentDirectory = '%Dir%'"
set "Command=%Command%; $start = Get-Date"
set "Command=%Command%; Write-Host '    Command line : %Cmd%'"
set "Command=%Command%; Write-Host ('    Start time   : ' + $start.ToString())"
set "Command=%Command%; Write-Host"
set "Command=%Command%; iex 'cmd /c %Cmd%'"
set "Command=%Command%; $end = Get-Date"
set "Command=%Command%; Write-Host"
set "Command=%Command%; Write-Host '    Command line : %Cmd%'"
set "Command=%Command%; Write-Host ('    Start time   : ' + $start.ToString())"
set "Command=%Command%; Write-Host ('    End time     : ' + $end.ToString())"
set "Command=%Command%; Write-Host ('    Elapsed time : ' + ($end - $start).ToString())"
set "Command=%Command%; }"

powershell -noprofile -command "%Command%"

endlocal

इसे उसी तरह चलाया जा सकता है timethis, जैसे \"कि कमांड लाइन में ( timethisजैसे भी हो) आवश्यक होने पर दोहरे उद्धरण चिह्नों से बचना सुनिश्चित करें । उत्पादित उत्पादन समान है। पुनर्निर्देशन हालांकि काम नहीं करेगा।


TimeThis विंडोज 2000 संसाधन किट से है और अब उपलब्ध नहीं है; 2003 में संसाधन किट TimeIt है, जो मेरे 64 बिट Win7 पर काम नहीं किया। एक PowerShell हल देखने के लिए superuser.com/questions/228056/...
Pesche

वह चूसता है। मेरे पास अभी भी पुराने समय से इधर-उधर पड़े हुए हैं।
जॉय

@स्पेश: मैंने एक बैच फ़ाइल जोड़ी है जो ड्रॉप-इन प्रतिस्थापन के रूप में कार्य कर सकती है timethis
जोए

4

आप सिस्टम शेड्यूलर का उपयोग आपके लिए कमांड चलाने के लिए कर सकते हैं।

नियंत्रण कक्ष -> अनुसूचित कार्य -> ​​नया बनाएँ ...।

केवल उस निर्धारित कार्य को इंगित करें जिसे आप चलाना चाहते हैं और यह वही करना चाहिए जो आप चाहते हैं।

यदि आप एक लॉगफाइल बनाना चाहते हैं जो समय की जानकारी को संग्रहीत करता है तो आप उपरोक्त स्क्रिप्ट के समान कुछ करने पर विचार कर सकते हैं।

मैं ऐसा करने के लिए "अब" नामक एक उपयोगिता का उपयोग करता हूं क्योंकि यह तिथि और समय को प्रतिध्वनित करेगा। यह कमांड लाइन स्क्रिप्ट के लिए बहुत आसान है, जिसे आप लॉग फाइल में ट्रैक करना चाहते हैं, लेकिन डेट / टाइम को मूल रूप से शामिल करने के लिए स्मार्ट की कमी है। बहुत आसान है क्योंकि यह एक प्रतिक्रिया के बारे में परवाह नहीं करता है और जब आप इसके साथ किया जाता है तो यह दूर हो जाता है।

अब यहाँ उत्थान पाया जा सकता है

स्क्रिप्ट का उदाहरण होगा ...

echo -------------- >>logfile.txt
now Process Starting>> logfile.txt
<commandhere> <target> >> logfile.txt
now process Ending >> logfile.txt
echo -------------- >> logfile.txt

नमूना उत्पादन की तरह दिखेगा

--------------
Mon Mar 06 14:58:48 2009 Process Starting
GNU Super Duper Process PID 12345! Success
Mon Mar 06 21:47:01 2009 Process Ending
--------------

4

एक अन्य विकल्प timeकमांड का उपयोग करना है /tजिसके साथ वर्तमान समय कंसोल (या लॉग पर पुनर्निर्देशित) के लिए निर्धारित किए बिना समय निर्धारित किए बिना रखा जाएगा। इसमें एक सीमा है कि यह आपको घंटे, मिनट देगा, लेकिन सेकंड और मिलीसेकंड नहीं।

call time /t  > myLog.log
call mybat   >> myLog.log
call time /t >> myLog.log

दुर्भाग्य से, "टाइम / टी" सेकंड नहीं आउटपुट करता है, बस "घंटा: मिनट सुबह / दोपहर"।
slolife

आप सही हैं, मैंने जवाब अपडेट कर दिया है।
akf

1

यदि आपके पास शक्तियां हैं, तो आप यह कर सकते हैं (सभी एक पंक्ति, पठनीयता के लिए टूट गई):

PS C:\> $startTime=Get-Date;ping /n 4 localhost;$endTime=Get-Date;
        echo "Finished in $(($endTime-$startTime).ToString())"

या आसान पुन: उपयोग के लिए इसे एक फ़ाइल में सहेजें।

# usage: .\timer.ps1 program [arguments]

$startTime = Get-Date;
$prog = $args[0];
$progargs = $args[1..($args.length-1)];

&$prog $progargs

$endTime = Get-Date;

echo "Finished in $(($endTime - $startTime).ToString())";

1
In command prompt:
 wmic path win32_operatingsystem get LocalDateTime
 wmic path win32_operatingsystem get LocalDateTime
 wmic path win32_operatingsystem get LocalDateTime

Output:
C:\Users\Steini> wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.370000+000

C:\Users\Steini>wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.525000+000

C:\Users\Steini>wmic path win32_operatingsystem get LocalDateTime
LocalDateTime
20180113135409.627000+000

क्लिपबोर्ड से Ctrl + v का उपयोग करके 15,5ms और 10,2ms


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.