Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2013, 14:53   #1
xLARSIKx
Новичок
Джуниор
 
Регистрация: 19.10.2013
Сообщений: 2
По умолчанию Реализация команды sleep в CMD (Язык сценариев Windows)

Здравствуйте.
У меня такая задача: Реализовать команду, которая будет "спать" определенное количество времени (Работа сценария должна быть через функцию TIME, а не через PING). Данное время вводиться сразу же после sleep.cmd т.е. первым аргументом %1. Я решил реализовать так: Мы создаем "цикл" который ждет 1 секунду и заставляем его работать N раз (Такой способ работы я выбрал потому что так не надо думать ни о минутах, ни о часах).
Цикл работает так:
1)Проверяем, не равняется ли время, которое нам нужно ждать 0, если равняется то выходим
2)Прибавляем к секундам, которые были при запуске программы 1(Если же сейчас 59 секунд то ставим значение 00)
3)Сейчас мы сравниваем нынешнее количество секунд с тем, которое мы получили выше и как оно станет ему равно то вычитаем из общего количества секунд N 1 секунду.(N-1) и идем на проверку:
4)Если N равно 0 то выходим из цикла, если не равно 0, то идем на начало цикла.



Проблема: Программа проваливается при переходе секунд с 07 на 08 и на 08 умирает. счетчик моментально летит к 0 и сценарий завершает работу.
Вот мой код:
Код:
@echo off
set sec=%1
echo Print yes if you want see how i work
set /P des=
set nowtime=%time%
set s=%nowtime:~6,2%
if %des%==yes (
echo %nowtime%
echo You say me sleep: %sec% seconds. 
)
:wait1s
if %sec%==0 goto endsec
if %s%==59 (
set s=00 
) else (
if %s%==08 set s=8
if %s%==09 set s=9
set /A s=%s%+1 2>nul)	
if %s%==1 set s=01
if %s%==2 set s=02
if %s%==3 set s=03
if %s%==4 set s=04
if %s%==5 set s=05
if %s%==6 set s=06
if %s%==7 set s=07
if %s%==8 set s=08
if %s%==9 set s=09
:check
set svtime=%time%
set svc=%svtime:~6,2%
if %s%==%svc%  (
	set /A sec=%sec%-1 2>nul
	if %des%==yes echo %sec%
	goto wait1s
	) else goto check
:endsec
echo ok
echo %time%

я уже все перепробовал, но ничего не получилось. Есть подозрения, что при записи числа с 0 он воспринимает число в восьмеричной системе и поэтому не воспринимает 08 и далее. По крайней мере если убрать 2>nul в set то вылазят ошибки. Заранее благодарю за помощь! Удачного вам утра|дня|вечера
xLARSIKx вне форума Ответить с цитированием
Старый 20.10.2013, 11:49   #2
xLARSIKx
Новичок
Джуниор
 
Регистрация: 19.10.2013
Сообщений: 2
По умолчанию

Уже все додумал и сделал. Можно потереть тему
xLARSIKx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выполнение cmd команды и получение рез-та в memo ziztracer Общие вопросы Delphi 17 08.02.2016 20:44
Выполнение команды cmd из VBA word Bublic Microsoft Office Word 2 23.04.2013 20:20
cmd. частично не работает отключение вывода результата выполнения команды goluzov Общие вопросы C/C++ 1 06.12.2012 12:10
IP-адреса доступных DHCP-серверов (Файл сценариев windows) InkBlack Помощь студентам 1 17.10.2012 22:01
Цикл for. Реализация sleep (Delphi) на C# Casper-SC Общие вопросы .NET 2 31.12.2009 15:06