Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Время (http://forum.oszone.net/showthread.php?t=248674)

Letrblak 08-12-2012 14:40 2041242

Время
 
Помогите пожалуйста сделать время виду 22:11:42,24 перевести в 22114224!!

Iska 08-12-2012 15:24 2041262

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sTime=%time::=%
set sTime=%sTime:.=%
set sTime=%sTime:,=%

echo %sTime%

endlocal
exit /b 0


Letrblak 08-12-2012 15:48 2041275

вопрос следующий: если мне нужно замерить время до начала операцыи, потом после её окончания, и узнать время исполнения операцыи, то код будет иметь такой вид??

@echo off
setlocal enableextensions enabledelayedexpansion

set t1=%time::=%
set t1=%sTime:.=%
set t1=%sTime:,=%
Echo %t1%
for /F %%i in (D:\Bohdan\man\1.txt) do echo %%i
set t2=%time::=%
set t2=%sTime:.=%
set t2=%sTime:,=%
echo %t2%
Set /a t="%t2%"-"%t1%"
echo %t%

ой, извените, всетаки наверно воттакой:

@echo off
setlocal enableextensions enabledelayedexpansion

set sTime=%time::=%
set sTime=%sTime:.=%
set sTime=%sTime:,=%
Echo %sTime%
for /F %%i in (D:\Bohdan\man\Drupal.txt) do echo %%i
set sTime1=%time::=%
set sTime1=%sTime:.=%
set sTime1=%sTime:,=%
echo %sTime1%
Set /a t="%sTime1%"-"%sTime%"
echo %t%

Iska 08-12-2012 16:32 2041295

Цитата:

Цитата Letrblak
то код будет иметь такой вид??

всетаки наверно воттакой…»

Ни то, ни другое.

Letrblak, на форуме были реализации арифметических операций над датой/временем. Поискав, Вы их найдёте. Я лично предпочитаю для подобных вещей пользовать WSH или PoSH.

gora 08-12-2012 20:06 2041422

Код:

@Echo Off
Call :Sec t1
Rem Здесь исследуемый процесс
Call :Sec t2
Set /a t=t2-t1
Echo %t% sec
Pause>Nul
Exit


:Sec
Set tm=%time%
Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
GoTo :EOF


megaloman 09-12-2012 21:43 2042035

Вот мой вариант решения. Часы в соответствии с региональным русским стандартом системы изменяются от 0 до 23; минуты, секунды в системе должны отображаться двумя знаками, формат времени - 24 часа. Отличия:
1. Разность выдаю в сотых секунды.
2. Учитываю возможный переход через одну полночь (когда t2<t1)
3. Правильно считаю значение каждого времени в сотых секунды - для поставленной задачи (подсчет разности) это не существенно.
Код:

@echo off
cls

Call :DSek t1

@Echo Здесь процесс
pause

Call :DSek t2

If %t2% GEQ %t1% (Set /a tt=t2-t1) Else (Set /a tt=t2-t1+8640000)

Echo Окончание %t2%
Echo Начало    %t1%
Echo Разность  %tt% сотые секунды
Pause

GoTo :Eof

:Dsek
FOR /F "tokens=1,2,3,4 delims=:.," %%i in ("%Time%") do Set /A %1=(%%i*3600+1%%j*60+1%%k-6100)*100+1%%l-100

gora, спасибо, не знал, что можно возвращать значение аргумента.
Однако в Ваш батник коварно вкралась ошибка: если время от 0 до 9 часов, то Ваша строка
Цитата:

Set /a %1=3600*%tm:~0,2%+60*1%tm:~3,2%+1%tm:~6,2%
выполнится с ошибкой, так как Вы выделяете под часы 2 знака, даже если стандарт времени настроен так, чтобы часы занимали 2 позиции, то, например, если текущее время 09 часов эта же строка тоже выполнится с ошибкой

gora 09-12-2012 22:06 2042051

Цитата:

Цитата megaloman
коварно вкралась ошибка »

1 Стандарт времени по умолчанию на ХР и win7 (H:mm:ss) и ведущего нуля у Часов нет. Видимо у Вас иные региональные настройки.
2 Точность до сотых в данном случае сравнима с инструментальной погрешностью и вряд ли представляет какой либо практический интерес.
3 Про суточный переход знаю, но не стал усложнять скрипт ибо сам по ночам сплю. :)

Iska 09-12-2012 22:18 2042059

Цитата:

Цитата megaloman
…не знал, что можно возвращать значение аргумента. »

А так: CMD/BAT: возврат значений из процедур через параметры — ещё лучше :).


Время: 22:51.

Время: 22:51.
© OSzone.net 2001-