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

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

Ответить
Настройки темы
CMD/BAT - Определение нажатой клавиши

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


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

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


У меня вопрос к знающим людям - может ли батник определить, какая клавиша была нажата по его запросу? Ну или хотя бы отличить как-то нажатие на Enter от всех остальных клавиш?

Отправлено: 16:48, 26-04-2012

 

Аватара для Morpheus

Ветеран


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

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


Цитата Enforcer7:
может ли батник определить, какая клавиша была нажата по его запросу? »
Код: Выделить весь код
CHOICE /?
Вы лучше опишите, чего хотите добиться.

Последний раз редактировалось Morpheus, 26-04-2012 в 19:39.


Отправлено: 19:26, 26-04-2012 | #2



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

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


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


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

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


Ситуация такая: выводится некоторая информация, для продолжения работы скрипта нужно нажать кнопку Enter, для выхода - любую другую. Choice тут не подходит, к сожалению...

Отправлено: 20:02, 26-04-2012 | #3


Аватара для Morpheus

Ветеран


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

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


Enforcer7, есть такой вариант:
Код: Выделить весь код
@echo off

set /p end=Press ENTER to continue!

if "%end%"=="" (goto cont) else (goto :eof)

:cont

Отправлено: 20:38, 26-04-2012 | #4


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


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

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


Morpheus, так я уже пытался извернутся. При нажатии на Enter мы действительно получим пустую переменную, а в противном случае консоль будет дожидаться, пока мы не завершим ввод переменной. Не совсем то, что нужно...

Отправлено: 20:46, 26-04-2012 | #5


Ветеран


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

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


Enforcer7,

1. Вам обязательно реализацию встроенными средствами?
2. Простое «Y/N» в «choice.exe » — вместо «Enter/Any key» — Вас никак не устраивает?
3. Что скажете насчёт использования PowerShell?

Отправлено: 02:38, 27-04-2012 | #6


Старожил


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

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


Enforcer7, используйте утилиту hs_readkey из набора утилит hs_packet. В сети живой ссылки не нашел, поэтому залил вам на файлообменник. Сканкод Enter'а = 13.

Последний раз редактировалось Anonymоus, 27-04-2012 в 08:49.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:42, 27-04-2012 | #7


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


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

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


Конечно, хотелось бы решить эту проблему встроенными средствами... Все-таки не всегда получается использовать дополнительные утилиты...

Отправлено: 10:50, 28-04-2012 | #8


Ветеран


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

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


Enforcer7, хотелось бы услышать ответы и на остальные вопросы (2 и 3).

Отправлено: 11:10, 28-04-2012 | #9


Старожил


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

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


Enforcer7, насчет использования только встроенных средств - скажите, а в этом самом батнике что-то обрабатывается в цикле? Т.е. он работает непрерывно, и нужно не прерывая его работы, ожидать нажатия enter? Если да, то вот такой вот демонстрационный образец:


Код: Выделить весь код
@Echo Off
If Exist "%temp%\stop.flag" Del "%temp%\stop.flag"

:: Запуск второй копии внутри первой
:: (для организации примитивного управления вторым запущенным процессом)
If "%SelfStart%"=="" (
Set SelfStart=yes
Start /B "" "%~nx0"
GoTo ControlThread
)

:: Именно тут крутится основной скрипт
:WorkThread
:: Ерунда со счетчиком в виде имитации полезной нагрузки
Cls
Set /A i+=1
Echo  [%i%]
Ping -n 2 127.0.0.1>nul
:: А вот тут проверка на наличие файла, дающего сигнал о выходе
:: Естественно, что вместо выхода можно совершать любое нужное действие, главное -
:: время от времени опрашивать наличие файла, что совсем не блокирует работу
:: основного скрипта ожиданием ввода от пользователя
If Exist "%temp%\stop.flag" Exit
GoTo WorkThread


:: Создание файла завершения работы по нажатию Enter
:ControlThread
Set Input=
Set /P Input=
If "%Input%"=="" (Echo.>"%temp%\stop.flag") Else (GoTo ControlThread)
Exit

Отправлено: 20:56, 28-04-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Отслеживание нажатий клавиш на клавиатуре (чтоб узнать код нажатой клавиши) beve AutoIt 17 23-03-2015 02:14
Javascript и определение нажатой клавиши (не символа) Dr.Dark Вебмастеру 6 05-10-2011 12:54
Службы - Горячие клавиши Samvel2 Microsoft Windows 7 1 28-07-2010 22:55
курсор мыши defender 2220 не двигается при нажатой клавише клавиатуры BTC 6300C Nikitaez Железо в Linux 8 05-02-2008 02:11
Как назначить кнопкам джойстика функцию нажатой клавиши на клаве. spiritmen Игры 4 05-06-2007 13:44




 
Переход