Показать полную графическую версию : Расчет времени и вывод часа, минуты, секунды на разных строках
Wookie-Altai
04-06-2012, 09:22
Можно ли вычислить время по схожей с такой схеме -
for /f "tokens=1,2* delims=." %%I in ('echo %...%') do set /a hor=%%I& set /a min=%%J& set /a sec=%%K
@echo hor
@echo min
@echo sec
pause
Вместо многоточия - time. Данный скрипт не работает. Помогите сделать рабочий
Например, так:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "tokens=1-3 delims=:." %%i in ('echo %time%') do (
set /a iHours=%%i
set /a iMinutes=%%j
set /a iSeconds=%%k
)
if defined iHours echo %iHours%
if defined iMinutes echo %iMinutes%
if defined iSeconds echo %iSeconds%
endlocal
exit /b 0
Wookie-Altai, зря отметили, снимите благодарность. Я вспомнил, что с «set /a» не всё так просто: будут проблемы с присвоением «09».
Поищите по разделу, корректные примеры были.
CyberMuesli
05-06-2012, 02:10
будут проблемы с присвоением «09» »
и 08 тоже инвалидная цифра в восьмеричной системе
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "tokens=1-3 delims=:. " %%i in ('echo %time%') do (
set /a iHours=100%%i %%100
set /a iMinutes=100%%j %% 100
set /a iSeconds=100%%k %% 100
)
if defined iHours echo %iHours%
if defined iMinutes echo %iMinutes%
if defined iSeconds echo %iSeconds%
endlocal
exit /b 0
и 08 тоже инвалидная цифра в восьмеричной системе »
Да.
CyberMuesli
05-06-2012, 04:10
Да. »
кроме этого, код set /a iMinutes=100%%j %% 100 годен
нет, не годен. он нули отсекает, а не пробелы. Код поправлен - добавлен разделитель пробел
SendMessage
06-06-2012, 17:00
Я, конечно, извиняюсь, но почему не по простому?
set nTime=%time%
set /a Hours=%nTime:~,2%
set /a Minutes=1%nTime:~3,2%-100
set /a Seconds=1%nTime:~6,2%-100
echo %Hours%
echo %Minutes%
echo %Seconds%
CyberMuesli
07-06-2012, 01:32
Я, конечно, извиняюсь, но почему не по простому? »
дело вкуса
у Вас пробел в часах будет, на этом можно погореть
SendMessage
07-06-2012, 12:52
у Вас пробел в часах будет, на этом можно погореть »
Погореть? Каким образом? Пробелы в начале в числовом выражении не учитываются.
что set /a n=8, что set /a n= 8 - разницы в результате не будет никакой.
А здесь:
set /a Seconds=1%nTime:~6,2%-100 »
;)?
CyberMuesli
07-06-2012, 15:21
Погореть? Каким образом? »
каким-нибудь образом, где будет предполагаться наличие слева нуля или его отсутствие, но не наличие пробела
у Вас пробел в часах будет »
Можно убрать пробел: set /a Hours=%nTime:~,2%+0А здесь: »
А что тут не так?
CyberMuesli
08-06-2012, 16:36
Можно убрать пробел: »
А что тут не так? »
http://forum.oszone.net/post-1928253.html#post1928253
SendMessage
22-06-2012, 07:41
Извините, давно не заходил.
А здесь:
Цитата SendMessage:
Код:
set /a Seconds=1%nTime:~6,2%-100
»
? »
А что здесь может быть смущающим?
108-100=8
109-100=9
Никак не 09 и не 08. Так что ошибок не будет. Или что-то другое Вас смущает? Я не могу смоделировать здесь ошибку. Был бы признателен за разъяснения. Может при каких-то региональных стандартах выводится 0-9 секунд вместо 00-09?
каким-нибудь образом, где будет предполагаться наличие слева нуля или его отсутствие, но не наличие пробела »
Это, извините, чистое теоризирование. К конкретному случаю не имеющее никакого отношения. Если, конечно, я не ошибаюсь, как писал выше, в выводе в различных регстандартах.
PS. Хотя все это, наверное, и не стоит какого-то обсуждения и разбора — буря в стакане. В кои-то веки заглянул на форум и ввязался в пустую дискуссию. :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.