9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
1

Два одновременно запущенных процесса

23.07.2014, 23:04. Показов 1824. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, программеры. Вопрос у мня по одному моменту в БАТнике.

Дело такое: мне нужно в определенном месте программы вывести пользователю на монитор вопрос с вариантами ответов (нажать д если да и н если нет, все такое..), но! ОДНОВРЕМЕННО с появлением на экране этого вопроса мне нужно активировать таймер или пинг-задержку - не важно! какой-то триггер, который через скажем 10 секунд очистит окно и выведет "Время на ответ истекло!".

Есть предложения как это выполнить?

Добавлено через 1 час 4 минуты
И еще: знак ! в эхо съедается программой ;( Я пробовал по-разному уже, и !! и ^!! и даже ^!!^! - все равно все символы воскл. знака съедены! Что делать? Как их выводить?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2014, 23:04
Ответы с готовыми решениями:

Разработать три процесса: процесс-сервер и два процесса-клиента
Требуется разработать три процесса, запускаемые из командной строки UNIX: процесс-сервер,...

Вывод stdout запущенного процесса одновременно на экран и в файл
Как сделать, чтобы запущенный при помощи команды Start-Process процесс выводил результат работы и в...

Что будет, если два разных потока попытаются отправить одновременно одному клиенту два разных пакета
Здравствуйте! Имеется вот такой незамысловатый метод отправки пакетов на сокет клиента ...

Два графика одновременно
Здравствуйте. Нужно изобразить 2 графика: y=sqrt(x-1) и y = sqrt(R-x^2)

10
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
23.07.2014, 23:54 2
Лучший ответ Сообщение было отмечено KiraLis39 как решение

Решение

Знаки ! съедаются директивой SetLocal EnableDelayedExpansion
Но если ее убрать, может перестать работать другая часть скрипта.
Поэтому нужно смотреть код целиком, чтобы подсказать.

Для ОС Windows Vista и выше существует команда choice, которая выбирает вариант по-умолчанию по истечению указанного времени.

Например,

Bash
1
choice /C 123 /M "Выберите 1 или 2, иначе по истечению 5 сек. будет выбрано 3" /T 5 /D 3
Справка
Код
CHOICE [/C список] [/N] [/CS] [/T тайм-аут /D элемент] [/M текст]

Описание.
    Эта программа позволяет выбирать элемент из списка элементов
    и возвращает индекс выбранного элемента.

Параметры:
   /C    список        Создаваемый список выбираемых элементов.
                       Список по умолчанию "YN".

   /N                  Скрытие списка элементов в приглашении.
                       Перед приглашением выводится сообщение
                       и элементы остаются доступными для выбора.

   /CS                 Включение учета регистра при выборе элементов.
                       По умолчание в программе регистр символов не учитывается.

   /T    тайм-аут       Число секунд перед выбором элемента по умолчанию.
                       Допустимыми являются значения от 0 до 9999.
                       Если указан 0, отсутствует пауза перед выбором
                       элемента по умолчанию.

   /D    элемент       Элемент, выбираемый по умолчанию через nnnn секунд.
                       Символ должен присутствовать в наборе элементов
                       в параметре /C; значение nnnn задается в параметре /T.

   /M    текст         Сообщение, отображаемое перед
                       приглашением. Если не указано, программа
                       выводит только приглашение.

   /?                  Вывод справки по использованию.

   Примечание
   Переменная среды ERRORLEVEL получает значение индекса
   клавиши, соответствующей выбранному элементу. Первый элемент
   в списке возвращает значение 1, второй - 2 и т.д.
   Если пользователь нажимает клавишу, не соответствующую допустимому
   выбору, подается звуковой сигнал. Если обнаруживается ошибка,
   возвращается значение ERRORLEVEL 255. Если нажимаются клавиши
   CTRL+BREAK или CTRL+C, программа возвращает значение ERRORLEVEL 0.
   При использовании параметров ERRORLEVEL в пакетной программе их
   следует перечислять по убыванию.

Примеры:
   CHOICE /?
   CHOICE /C YNC /M "Y - Да, N - Нет, C - Отмена."
   CHOICE /T 10 /C ync /CS /D y
   CHOICE /C ab /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
   CHOICE /C ab /N /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
1
Модератор
Эксперт JS
5197 / 2079 / 406
Регистрация: 06.01.2013
Сообщений: 4,793
24.07.2014, 00:12 3
Лучший ответ Сообщение было отмечено KiraLis39 как решение

Решение

KiraLis39, вне кавычек символ ! экранируется так: ^^^!
Внутри кавычек - никак. Однако, вы можете записать его в переменую такой строкой:
Bash
1
(set $=^^^!)
и подставлять в нужном месте (даже в кавычках) как !$!


Добавлено позже:
А в кавычках он экранируется так:
Bash
1
set "$=^!"
Я никогда не познаю дзен M$
1
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
24.07.2014, 00:18 4
FraidZZ, ух ты ! Я про это забыл.

А ты вроде об этом писал в теме о тонкостях )
0
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
24.07.2014, 01:06  [ТС] 5
Круто 0_о о таком еще не читал нигде ))
спс
0
Eva Rosalene
24.07.2014, 01:29
  #6

Не по теме:

Цитата Сообщение от Dragokas Посмотреть сообщение
А ты вроде об этом писал в теме о тонкостях )
Я бы сказал, скорее в теме о тонких извращениях :-[

0
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
24.07.2014, 02:04  [ТС] 7
Цитата Сообщение от Dragokas Посмотреть сообщение
Для ОС Windows Vista и выше существует команда choice, которая выбирает вариант по-умолчанию по истечению указанного времени.
Хочу уточнить: тут можно выбрать два (в моем случае) варианта: я дал уже ввод пароля к программе и выход из программы с фразой тайм-аут! Но. Сделать это мне удалось пока лишь так:

Bash
1
2
3
4
5
6
7
echo ========
set /p "cho=>"
set а=%cho%
set б=goto TIMEOUT
choice /N /T 10 /C аб /D б /M "Назовите первую букву алфавита?"
echo ========
CALL :SELFGUARD %cho%
в селфгварде уже программа проверяет верен ли пароль и в зависимости от этого дает вход или нет. Однако результат такой - сначала я ввел число. Любое. Потом мне нужно выбрать букву а, и только потом селфгвард получает число и проверяет. goto TIMEOUT - это цикл, закрывающий как раз программу в случае прохождения 10 секунд без ВВОДА БУКВЫ контрольной.

Можно ли как-то прописать, чтобы в %che% можно было вводить пароль УЖЕ под таймером? а при отсылке пароля таймер завершанся с результатом а, то-есть без выхода из программы по тайм-ауту?

Тайм-аут мне нужен ИМЕННО в случае, когда пользователь НЕ вводит пароль (потому что сделать так, чтобы он считал даже во время неудачных попыток не выйдет.) Вообщем, как бы это красиво провернуть?

Добавлено через 11 минут
Даже наверное несколько иначе можно?

Чтобы числом а был какой-то рендом иначе пользователь просто будет жать все, слущая пищалку, пока не подберет пароль. Плохо будет. Можно чтобы а-вариант в чойсе был ЛЮБЫМ вводимым пользователем числом? Я думал о рендоме, но ведь рендом уже будет выставлять свое любое число, не давая возможности ввести верный пароль ((
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
24.07.2014, 11:13 8
Я вижу размышление, которое понятно только Вам, а не конкретный вопрос. Что нужно?
1
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
24.07.2014, 16:35  [ТС] 9
Конкретный вопрос как раз и есть "как сделать проверку пароля при входе в программу с текущим таймером?"
Я все описал выше - либо НЕЛЬЗЯ ввести неправильный пароль и тогда смысл теряется, либо таймер НЕ идет в момент ввода и тогда от него больше мусора чем толку. Говорю еще раз - проверка пароля идет командой колл после его ввода, но чойс вставить в промежуток между появлением окна ввода пароля и его возвращенным значением назад, верным или нет, я не могу - как вообще это сделать? Чтобы таймер считал 10 секунд в течении времени, пока пользователь думает, или смотрит на экран или вводит неправильные пароли.

Я полагаю уже что это тут невозможно.

Добавлено через 3 минуты
В итоге выяснилось, что чойс не реагирует вообще на команду гото и все остальное и пропускает пользователя при правильном вводе пароля даже при неверном ответе на контрольный вопрос.

Я удалил эту часть, может быть вернусь к ней позже. Остается один главный вопрос - как вообще управлять вариантами чойса? Ну дал ты выбор д,н или о (да, нет, отмена) - а как прописать действия? через (SET "cho=>") за ним?

Добавлено через 1 минуту
Вообщем, может позже дойду.. спасибо все равно за новую инфу для размышления )
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
24.07.2014, 21:01 10
Bash
1
2
echo %errorlevel%
if %errorlevel%==Код Действие
Код формируется по такому принципу:

choice /c abc
a - 1
b - 2
c -3
1
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
25.07.2014, 09:55  [ТС] 11
Спасибо, но одновременные действия по-прежнему мне не доступны..
0
25.07.2014, 09:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2014, 09:55
Помогаю со студенческими работами здесь

Два звука одновременно
Сабж:нужно проиграть несколько wav'ов одновременно. Поиск юзал-есть одна такая тема, но там для...

Два метода одновременно
Как в Java выполнять несколько методов одновременно?

Два провайдера одновременно
Подключены два провайдера. У 1 пользуюсь только локалкой, у 2 локалка и инет(через wi-fi роутер)....

Два цикла одновременно
Можно ли сделать 2 цикла, которые будут работать одновременно? Если да, то как?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru