Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Время

Ответить
Настройки темы
CMD/BAT - [решено] Время

Новый участник


Сообщения: 22
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:40, 08-12-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

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

echo %sTime%

endlocal
exit /b 0

Отправлено: 15:24, 08-12-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 22
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

@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%

Отправлено: 15:48, 08-12-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

всетаки наверно воттакой…»
Ни то, ни другое.

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

Отправлено: 16:32, 08-12-2012 | #4


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:06, 08-12-2012 | #5


Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


Вот мой вариант решения. Часы в соответствии с региональным русским стандартом системы изменяются от 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 часов эта же строка тоже выполнится с ошибкой

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 09-12-2012 в 21:51.


Отправлено: 21:43, 09-12-2012 | #6


Аватара для gora

Ушёл из жизни


Сообщения: 6021
Благодарности: 3491

Профиль | Отправить PM | Цитировать


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

Отправлено: 22:06, 09-12-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата megaloman:
…не знал, что можно возвращать значение аргумента. »
А так: CMD/BAT: возврат значений из процедур через параметры — ещё лучше .
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 09-12-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Время

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
http/web - Не зайти на google.com или youtube.com все время выдает “Во время загрузки страницы с metonol Сетевые технологии 1 18-03-2019 20:09
2008 R2 - Время в домене. Не синхронизировались ПК. Время спешит теперь на час DeniTornado Windows Server 2008/2008 R2 11 28-03-2012 16:37
Разное - [решено] В время от время открывается окно cmd и тутже уничтожается. Patrig78 Microsoft Windows 7 16 31-08-2011 14:19
Про время в AD... Ferum01 Microsoft Windows NT/2000/2003 1 19-08-2007 19:48
Время GHosTiK Microsoft Windows 2000/XP 12 09-11-2003 01:57




 
Переход