Программа должна уснуть на заданное количество секунд.
Программа засыпает на заданное количество секунд:
Код:
@echo off
set /a x=%1
set tim=%time%
for /f "tokens=1,2,3 delims=:" %%a in ("%tim%") do set /a st=(%%a*60+%%b)*60+%%c 2> nul
:cycle
set tim=%time%
for /f "tokens=1,2,3 delims=:" %%a in ("%tim%") do set /a ct=(%%a*60+%%b)*60+%%c 2> nul
set /a dt=%ct%-%st% 2> nul
if /i %dt% leq %x% goto :cycle
goto :eof
Проблема кода в том что при переходе времени до полуночи? т. е. 00:00:00 программа переходит в вечный цикл , как это исправить ?
Еще не должно выводить ошибку про восьмеричную систему, т.е. когда пишешь 08 считало как 8 секунд
В данной задаче нельзя использовать команду ping и timeout
|
anoxina, таким циклом Вы даёте 100% нагрузку на одно из реальных/виртуальных ядер процессора. Не делайте так. См. Пауза в пакетном файле:
Код:
>nul ping.exe -n %~1 127.0.0.1
|
Нельзя использовать команду ping.
|
Цитата:
Цитата anoxina
В данной задаче нельзя использовать команду ping. »
|
Просмотрел :). Поясните, почему нельзя?
В новых ОС есть ещё «timeout»:
Код:
>nul timeout.exe /t %~1 /nobreak
|
Такая цель задачи, timeout тоже использовать нельзя
|
Код:
@echo off
setlocal
set "timeout=10"
set "t1=%time:~0,-3%"
echo %t1%
:1
set "t2=%time:~0,-3%"
if %t1% equ %t2% (goto:1) else (
set /a timeout-=1
set "t1=%t2%"
)
if %timeout% neq 0 goto:1
echo %time:~0,-3%
|
Foreigner, Когда пишешь 08 и 09 программа не работает, а уходит в вечный цикл, как это исправить?
|
Проблему исправила
Цитата:
Цитата Foreigner
:1
set "t2=%time:~0,-3%"
if %t1% equ %t2% (goto:1) else (
set /a timeout-=1
set "t1=%t2%" »
|
Объясните как работает этот фрагмент
|
anoxina,
Код:
@echo off
setlocal
set "timeout=09"
2>nul set /a %timeout% || echo Enter valid integer && goto:eof
...
|
Цитата:
Цитата Foreigner
:1
set "t2=%time:~0,-3%"
if %t1% equ %t2% (goto:1) else (
set /a timeout-=1
set "t1=%t2%" »
|
Объясните как работает этот фрагмент
|
А если ввожу 091 081 уже не работает , как это исправить?
|
Не понятен смысл. Зачем это надо? Уберите лидирующий ноль(нули) и все будет нормально:
Код:
@echo off
setlocal
set "timeout=009"
set "t1=%time:~0,-3%"
:0
if %timeout:~0,1% equ 0 set timeout=%timeout:~1% && goto:0
echo %t1%
...
|
Время: 17:26.
© OSzone.net 2001-