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

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

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

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


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

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


Изменения
Автор: anoxina
Дата: 13-12-2015
Программа засыпает на заданное количество секунд:
Код: Выделить весь код
@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

Отправлено: 10:32, 13-12-2015

 

Ветеран


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

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


anoxina, таким циклом Вы даёте 100% нагрузку на одно из реальных/виртуальных ядер процессора. Не делайте так. См. Пауза в пакетном файле:
Код: Выделить весь код
>nul ping.exe -n %~1 127.0.0.1
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:20, 13-12-2015 | #2



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

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


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


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

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


Нельзя использовать команду ping.

Отправлено: 14:34, 13-12-2015 | #3


Ветеран


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

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


Цитата anoxina:
В данной задаче нельзя использовать команду ping. »
Просмотрел . Поясните, почему нельзя?

В новых ОС есть ещё «timeout»:
Код: Выделить весь код
>nul timeout.exe /t %~1 /nobreak
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:47, 13-12-2015 | #4


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


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

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


Такая цель задачи, timeout тоже использовать нельзя

Отправлено: 19:08, 13-12-2015 | #5


Ветеран


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

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


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

Отправлено: 20:28, 13-12-2015 | #6


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


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

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


Foreigner, Когда пишешь 08 и 09 программа не работает, а уходит в вечный цикл, как это исправить?

Последний раз редактировалось anoxina, 13-12-2015 в 22:40.


Отправлено: 22:08, 13-12-2015 | #7


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


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

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


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

Цитата Foreigner:
:1
set "t2=%time:~0,-3%"
if %t1% equ %t2% (goto:1) else (
set /a timeout-=1
set "t1=%t2%" »
Объясните как работает этот фрагмент

Отправлено: 22:55, 13-12-2015 | #8


Ветеран


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

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


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

set "timeout=09"
2>nul set /a %timeout% || echo Enter valid integer && goto:eof
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:00, 13-12-2015 | #9


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


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

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


Цитата Foreigner:
:1
set "t2=%time:~0,-3%"
if %t1% equ %t2% (goto:1) else (
set /a timeout-=1
set "t1=%t2%" »
Объясните как работает этот фрагмент

Отправлено: 05:44, 14-12-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - [решено] Вывод изображения на весь экран в заданное время Nic0p0L Скриптовые языки администрирования Windows 9 30-06-2015 19:47
Офис и Текст - Как убрать заданное количество символов на начале каждой строки KooDI Программное обеспечение Windows 2 03-03-2013 21:32
2007 - Outlook (Через несколько секунд программа будет закрыта) McLotos Microsoft Office (Word, Excel, Outlook и т.д.) 2 09-04-2012 06:05
Как научить скрипт менять разрешение экрана на заданное? evg64 AutoIt 1 17-04-2010 02:54
HDD - Пока форматируется - уснуть можно tref2me Накопители (SSD, HDD, USB Flash) 4 28-02-2008 16:38




 
Переход