2017-02-22 43 views
0

Как создать команду для подсказки с таймером, и если я не буду отвечать за это время, она отключит программу. Не знаю, возможно ли это сделать прямо в одной партии, или мне нужно создать новую партию, которая контролирует основную программу (например, обнаружение взаимодействия с пользователем и программой) ...Как убить пакетную программу, если нет действий после «х» секунд?

Это моя партия программа:

echo off 
:START 
echo . 
echo . Chose one shortcut: 
echo . 
echo . 1 . 2017 Folder 
echo . 2 . Design Folder 
echo . 3 . MIDAS 
echo . 4 . 2017 Folder 
echo . 
echo . R: 
:: Here is the problem, here I want to detect how many seconds the user is spending 
to answer the program, if like 10 secs, it will close automaticly. 
set /P a=Type option: 
If %a%==1 goto A 
If %a%==2 goto B 
If %a%==3 goto C 
If %a%==4 goto D 


:A 
echo Exit 
echo Exiting 
exit 

:B 
echo Design Folder 
echo \\FAP-mmedia\MMEDIA\Mediateca_Corrente\Design 
start \\FAP-mmedia\MMEDIA\Mediateca_Corrente\Design 
GOTO START 

:C 
echo MIDAS 
start \\Fap-dept\dept\RIALFA\EMFA\SDFA\06_CAVFA\Bases_de_Dados\MIDAS.mdb 
GOTO START 

:D 
echo 2017 Folder 
echo \\FAP-mmedia\MMEDIA\Mediateca_Corrente\Design\2017 
start \\FAP-mmedia\MMEDIA\Mediateca_Corrente\Design\2017 

GOTO A 

Благодарим за помощь.

Теперь я ВЫБОРА: Это дает мне ошибку ... Я написал это:

CHOICE /C 1234 /T 10 /D 1 /M "Type the option:" 
IF ERRORLEVEL 1 GOTO A 
IF ERRORLEVEL 2 GOTO B 
IF ERRORLEVEL 3 GOTO C 
IF ERRORLEVEL 4 GOTO D 

но игнорирует A, B, C, D группы, он просто продолжает, как чтение сценария без перепрыгивая в соответствующее письмо.

+3

Посмотрите на с помощью команды выбора, который можно установить тайм-аут по умолчанию ответ на. – Squashman

+0

ОК спасибо, я посмотрю на это. –

+0

Знаете ли вы, можно ли показать или «вызвать» ВЫБОР «/ Т» в эхо? Как показывать время, которое я получил, пока оно не закрывается? –

ответ

1

Вам необходимо проверить ERRORLEVELS от самых больших до самых маленьких.

Если вы прочитали справку для команды IF, вы увидите это.

ERRORLEVEL number Specifies a true condition if the last program run 
        returned an exit code equal to or greater than the number 
        specified. 

Этот код работает отлично.

@echo off 
:START 
CLS 
CHOICE /C 1234 /T 10 /D 1 /M "Type the option:" 
IF ERRORLEVEL 4 GOTO D 
IF ERRORLEVEL 3 GOTO C 
IF ERRORLEVEL 2 GOTO B 
IF ERRORLEVEL 1 GOTO A 

:A 
echo in A 
echo Exiting Program 
pause 
GOTO :EOF 

:B 
echo in B 
pause 
GOTO START 

:C 
echo in C 
pause 
goto START 

:D 
echo in D 
pause 
goto START 
+0

Я попытался инвертировать порядок от 4 до 1 ... И он делает ту же ошибку. –

+1

@HubertKenobi, и эта ошибка будет ????? Я не всеведущий. – Squashman

+0

@HubertKenobi, введите мой код, который я тестировал. – Squashman

1

Чтобы изменить порядок использования ответа Squashman в:

CHOICE /C 1234 /T 10 /D 1 /M "Type the option:" 
IF %ERRORLEVEL%==1 GOTO A 
IF %ERRORLEVEL%==2 GOTO B 
IF %ERRORLEVEL%==3 GOTO C 
IF %ERRORLEVEL%==4 GOTO D 
+0

Oh. Хорошо, это ошибка. Я изменил порядок «IF ERRORLEVEL», но не изменил порядок «/ C 1234». –

+0

Он работает только тогда, когда я использую второй («IF% ERRORLEVEL% ==») –

+0

Ответ обновлен. – Compo