Имя пользователя:
Пароль:
 

Название темы: [решено] Прервать цикл
Показать сообщение отдельно

Старожил


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

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


o3epo, используйте это, как образец. Можете сделать и по другому, главное - чтобы вы уловили идею, за счет чего реализовано неблокирующее ожидание ввода чего-либо пользователем.
Код: Выделить весь код
@Echo Off
:: Проверка на то, проихводится ли вторичный запуск батника
If "%Thread1Started%"=="true" GoTo Thread2

:Thread1
:: Запуск второй копии, циклично меняющей цвета в консоли
Set Thread1Started=true
Start /B "" "%~nx0"
:: Здесь ожидается команда от пользователя
:WaitCmds
Cls
:: Приглашение к вводу
Set /P Cmd=   Enter your command:^> 
:: Проверка на пустое значение
If "%Cmd%"=="" (GoTo WaitCmds) Else (Echo.>"%Temp%\ready.tmp")
:: Вывод команды, к этому времени смена цвета должна прекратиться
Echo.
Echo Command is: "%Cmd%"
Pause&Exit

:Thread2
:: У каждого из цветов одинаковая, достаточно небольшая задержка
:: Проверка на наличие файла-флага, извещающего о введенной команде
If Exist "%Temp%\ready.tmp" (Del "%Temp%\ready.tmp"&Color f0&Exit)
Color f0
Ping -n 2 127.0.0.1>nul
If Exist "%Temp%\ready.tmp" (Del "%Temp%\ready.tmp"&Color f0&Exit)
Color 0f
Ping -n 2 127.0.0.1>nul
GoTo Thread2
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:40, 06-10-2012 | #2

Название темы: [решено] Прервать цикл