2009-09-22 2 views
4

Как вы используете скрипт в командной строке DOS?Как сделать сценарий в DOS?

The * NIX equivanlent будет:

$ time myscript 

real 0m0.886s 
user 0m0.846s 
sys 0m0.031s 

$ 

Есть ли эквивалент DOS к этому? Благодаря

+0

Вы действительно говорите о DOS или командной оболочке для окон? –

+1

Возможный дубликат [Как измерить время выполнения команды в командной строке Windows?] (Http://stackoverflow.com/questions/673523/how-to-measure-execution-time-of-command-in-windows-command -line) – olibre

ответ

5

вы можете поместить это в начале и в конце вашей партии:

echo %time% 
+0

единственный способ, я думаю. +1 – dmityugov

+1

Предупреждение: не используйте его непосредственно в команде ('echo% time% & myprog & echo% time%'), потому что расширение для обоих выполняется до того, как команда будет выполнена. –

3

Это пакетный сценарий DOS, которая будет вычислять разницу во времени для вас, а не просто делать echo %time%.

Следующий код будет работать нормально, пока ваш «тайм-пользовательский раздел» не займет больше 24 часов. Пожалуйста, простите или дайте мне предложения, это незавершенная работа, в которой я провел около часа.

Замените «ПАУЗА» на вызов вашего скрипта, чтобы ввести собственный код.

DOS BAT FILE СЛЕДУЮЩЕМ:

Примечания: было отредактировано, чтобы исправить проблемы с ведущими нулями восьмеричными, а не десятичной системой.

Примечание: был отредактирован для управления работой над часовым поясом «полночь» и для ввода ведущих нулей в выход.

@echo off 
@rem -------------------------------------------- 
setlocal ENABLEEXTENSIONS 

set start_time=%time% 
echo Beginning at: %start_time% 
echo Running Timed Batch File 
echo. 

@rem echo %* <-- Extension for all args -- easier than following line 
@rem echo %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 ... ... 

@rem DO YOUR WORK HERE -- see "call"/PAUSE is here to "fake" work 
@rem call userscript.bat %* 
PAUSE 

set stop_time=%time% 
echo. 
echo Timed Batch File Completed 
echo Start time: %start_time% 
echo Stop time : %stop_time% 


set TEMPRESULT=%start_time:~0,2% 
call:FN_REMOVELEADINGZEROS 
set start_hour=%TEMPRESULT% 
@rem 
set TEMPRESULT=%start_time:~3,2% 
call:FN_REMOVELEADINGZEROS 
set start_min=%TEMPRESULT% 
@rem 
set TEMPRESULT=%start_time:~6,2% 
call:FN_REMOVELEADINGZEROS 
set start_sec=%TEMPRESULT% 
@rem 
set TEMPRESULT=%start_time:~9,2% 
call:FN_REMOVELEADINGZEROS 
set start_hundredths=%TEMPRESULT% 

set TEMPRESULT=%stop_time:~0,2% 
call:FN_REMOVELEADINGZEROS 
set stop_hour=%TEMPRESULT% 
@rem 
set TEMPRESULT=%stop_time:~3,2% 
call:FN_REMOVELEADINGZEROS 
set stop_min=%TEMPRESULT% 
@rem 
set TEMPRESULT=%stop_time:~6,2% 
call:FN_REMOVELEADINGZEROS 
set stop_sec=%TEMPRESULT% 
@rem 
set TEMPRESULT=%stop_time:~9,2% 
call:FN_REMOVELEADINGZEROS 
set stop_hundredths=%TEMPRESULT% 

set /A start_total=(((((%start_hour%*60)+%start_min%)*60)+%start_sec%)*100)+%start_hundredths% 
set /A stop_total=(((((%stop_hour%*60)+%stop_min%)*60)+%stop_sec%)*100)+%stop_hundredths% 

set /A total_time=%stop_total% - %start_total% 

set /A total_hundredths=%total_time% %% 100 
set total_hundredths=00%total_hundredths% 
set total_hundredths=%total_hundredths:~-2% 
set /A total_time=%total_time%/100 

set /A total_sec="%total_time% %% 60" 
set total_sec=00%total_sec% 
set total_sec=%total_sec:~-2% 
set /A total_time=%total_time%/60 

set /A total_min="%total_time% %% 60" 
set total_min=00%total_min% 
set total_min=%total_min:~-2% 
set /A total_time=%total_time%/60 

set /A total_hour="%total_time% %% 60" 
@rem Handle if it wrapped around over midnight 
if "%total_hour:~0,1%"=="-" set /A total_hour=%total_hour% + 24 

echo Total time: %total_hour%:%total_min%:%total_sec%.%total_hundredths% 

@rem -------------------------------------------- 
@rem Exit the BAT Program 
endlocal 
goto END 

@rem -------------------------------------------- 
@rem FN_REMOVELEADINGZEROS function 
@rem Used to remove leading zeros from Decimal 
@rem numbers so they are not treated as Octal. 
:FN_REMOVELEADINGZEROS 
if "%TEMPRESULT%"=="0" goto END 
if "%TEMPRESULT:~0,1%" NEQ "0" goto END 
set TEMPRESULT=%TEMPRESULT:~1% 
goto FN_REMOVELEADINGZEROS 

@rem -------------------------------------------- 
@rem BAT PROGRAM/FUNCTION FILE EXIT 
:END 
5

вы можете использовать timeit.exe из Windows Server 2003 Resource Kit. Вы также получаете дополнительные полезные инструменты и командные порты Unix.

C:\Documents and Settings\Rob>timeit sleep 3 

Version Number: Windows NT 5.1 (Build 2600) 
Exit Time:  2:40 pm, Thursday, December 10 2009 
Elapsed Time:  0:00:03.296 
Process Time:  0:00:00.015 
System Calls:  7576 
Context Switches: 1974 
Page Faults:  1072 
Bytes Read:  6172 
Bytes Written: 11086 
Bytes Other:  144432 
+0

Этот подход был самым легким для меня с одним раздражением. Я выбрал пакетный файл dos, который находится в каталоге c: \ windows \ system32. Когда я попытался это сделать, мне пришлось ввести полный путь к файлу .bat, хотя это было в моем системном пути. – buzz3791

0

Если вы не возражаете против использования третьей стороны EXE за помощью, timer.exe из Gammadyne очень полезно.

Смежные вопросы