CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Аватара пользователя
anoxina

CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

Программа засыпает на заданное количество секунд:



Код:

Код: Выделить всё

@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
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение Iska »

anoxina, таким циклом Вы даёте 100% нагрузку на одно из реальных/виртуальных ядер процессора. Не делайте так. См.
Пауза в пакетном файле
:



Код:

Код: Выделить всё

>nul ping.exe -n %~1 127.0.0.1
Аватара пользователя
anoxina

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

А если ввожу 091 081 уже не работает , как это исправить?
Аватара пользователя
anoxina

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

Цитата anoxina:



В данной задаче нельзя использовать команду ping.
CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.




Просмотрел Изображение. Поясните, почему нельзя?



В новых ОС есть ещё «timeout»:



Код:

Код: Выделить всё

>nul timeout.exe /t %~1 /nobreak
Аватара пользователя
anoxina

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

Код:

Код: Выделить всё

@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%
Аватара пользователя
anoxina

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

Проблему исправила




Цитата Foreigner:



:1

set "t2=%time:~0,-3%"

if %t1% equ %t2% (goto:1) else (

set /a timeout-=1

set "t1=%t2%"
CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.




Объясните как работает этот фрагмент
Аватара пользователя
anoxina

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение anoxina »

anoxina,



Код:

Код: Выделить всё

@echo off
setlocal
set "timeout=09"
2>nul set /a %timeout% || echo Enter valid integer && goto:eof
...
Аватара пользователя
Foreigner

Re: CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.

Сообщение Foreigner »

Цитата Foreigner:



:1

set "t2=%time:~0,-3%"

if %t1% equ %t2% (goto:1) else (

set /a timeout-=1

set "t1=%t2%"
CMD/BAT - [решено] Программа должна уснуть на заданное количество секунд.




Объясните как работает этот фрагмент
Ответить

Вернуться в «Скриптовые языки администрирования Windows»