@echo off pause rem ППП _EnableDE rem v2019-01-28_1 rem Устанавливает флаг _DE, если на момент выполнения delayed expansion было rem включено, иначе снимает флаг и включает delayed expansion. Служит для rem элиминирования лишних SETLOCAL/ENDLOCAL в подпрограммах. rem Usage on levels 1 and 2: rem %_EnableDE% rem Usage on level 2 and deeper: rem %_EnableDE:^=^^^% rem Errorlevel после выполнения не определен. set _EnableDE=^ (if "" == "!!" (^ if not defined _DE set _DE=1^ ) else (^ (if defined _DE set _DE=)^^^ & setlocal enabledelayedexpansion^ )) rem ППП _DisplayExecTime rem v2018-09-01_1 rem Отображает количество секунд, прошедших с момента, дата и время которого rem сохранены в переменных _Date и _Time соответственно. rem Разница в датах, если есть, всегда принимается за 1. rem Не может использоваться в других ППП (но может быть доработана для этого). rem In: rem - %%a - %time%; rem - %%b - %date%. rem Всегда возвращает ошибку 0. rem Usage: rem for /f "tokens=1*" %%a in ("%time% %date%") do %_DisplayExecTime% set _DisplayExecTime=^ if defined _Date if defined _Time (^ %_EnableDE%^ & (for /f "tokens=1-4 delims=:," %%A in ("!_Time!") do (^ set B=%%B^ & (if "0" == "!B:~,1!" if not 00 == !B! set B=!B:~1!)^ & set C=%%C^ & (if "0" == "!C:~,1!" if not 00 == !C! set C=!C:~1!)^ & set D=%%D^ & (if "0" == "!D:~,1!" if not 00 == !D! set D=!D:~1!)^ & set /a "Start=(%%A*3600+B*60+C)*100+D"^ )) ^&^& (if defined B if defined C if defined D (^ (for /f "tokens=1-4 delims=:," %%A in ("%%a") do (^ set B=%%B^ & (if "0" == "!B:~,1!" if not 00 == !B! set B=!B:~1!)^ & set C=%%C^ & (if "0" == "!C:~,1!" if not 00 == !C! set C=!C:~1!)^ & set D=%%D^ & (if "0" == "!D:~,1!" if not 00 == !D! set D=!D:~1!)^ & if %%b == !_Date! (^ set /a "Diff=(%%A*3600+B*60+C)*100+D-Start",Diff1=Diff/100,Diff2=Diff%%100^ ) else (^ set /a "Diff=8640000+(%%A*3600+B*60+C)*100+D-Start",Diff1=Diff/100,Diff2=Diff%%100^ )^ ))^ & (if !Diff2! leq 9 set Diff2=0!Diff2!)^ & echo/^ & if %%b == !_Date! (^ echo Execution time: !Diff1!,!Diff2! s (!_Time! - %%a^^^))^ else (^ echo Execution time: !Diff1!,!Diff2! s (!_Date! !_Time! - %%b %%a^^^))^ ))^ & if not defined _DE endlocal^ ) set _Date=%date% set _Time=%time% for /d %%A in (*) do rd /s /q "%%A" for /f "tokens=1*" %%a in ("%time% %date%") do %_DisplayExecTime% |