CMD нажмите клавишу в любое время, чтобы вызвать X - PullRequest
0 голосов
/ 19 декабря 2018

возможно ли разрешить запуск сценария следующим образом:

@echo off & cls
:setnum
set /p %ynum%=Pick a Number: 
:start
echo This is your number: %ynum%
timeout /t 1 /nobreak > NUL
goto start

этот сценарий должен выводить% ynum% все время, пока я не закрою его.Есть ли какой-нибудь способ сканировать все время для ввода данных пользователем, и если пользователь нажимает, скажем, «любую клавишу» или определенную клавишу, то перейдите к setnum?

Возможно ли это с CMD или невозможно?

BR

1 Ответ

0 голосов
/ 29 марта 2019

Это будет повторяться бесконечно, пока либо 1.) не будет набрана секретная фаза, либо 2.) Нажата Control + C (сигнал прорыва по умолчанию для cmd.exe.

Также показывает текущее время на каждомитерации. И показывает, сколько итераций / циклов вы прошли ранее. 3-я строка - это секретная фраза - не стесняйтесь менять.

Поместите это в пакетный файл:

@echo off
setlocal EnableDelayedExpansion

set "zLoopCounter=0"
set "zTestInput="
set "zLoopBreak=secr3tKey"

:zTimeWarp

cls
set "zTime=!time!"
if !zLoopCounter! GTR 0 echo ;[i] You're In A Loop.  You Pressed "!zTestInput!".  You've Been Here !zLoopCounter! Time^(s^) Before.
set /p zTestInput=[CurrTime !zTime!] Pick A Number:

if "!zTestInput!"=="!zLoopBreak!" (
    echo ;[i] You Left The Loop!
) else (
    set /a zLoopCounter+=1 >nul
    goto :zTimeWarp
)

Выход:

;[i] You're In A Loop.  You Pressed "6".  You've Been Here 1 Time(s) Before.
[CurrTime 20:12:18.21] Pick A Number:

;[i] You're In A Loop.  You Pressed "98426".  You've Been Here 2 Time(s) Before.
[CurrTime 20:13:13.74] Pick A Number:

;[i] You're In A Loop.  You Pressed "22.2".  You've Been Here 3 Time(s) Before.
[CurrTime 20:16:31.21] Pick A Number:

;[i] You're In A Loop.  You Pressed "12344".  You've Been Here 4 Time(s) Before.
[CurrTime 20:16:49.28] Pick A Number:

;[i] You Left The Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...