Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Не ждать подтверждения выбора переменной (http://forum.oszone.net/showthread.php?t=276282)

interminable 22-01-2014 19:28 2294292

Не ждать подтверждения выбора переменной
 
Есть кодик:
@Echo off
chcp 1251
echo BLACK press 1, WHITE press 2.
Set /P Ch=Select:
If "%Ch%"=="1" (
sqlplus /nolog @run.sql
)
If "%Ch%"=="2" (
sqlplusw /nolog @run.sql
)
if not exist exit
exit

Есть 2 вопроса:
1.Как сделать, чтоб выбор воспринимался без нажатия Enter, т.е. нажал 1 и все пошло поехало...
2.Нужно, чтоб после выбора и выполнения окно команд закрывалось.
Ни exit, ни start "sqlplus /nolog", start sqlplus /nolog НЕ ПОМОГАЮТ:-(

Iska 22-01-2014 19:42 2294314

Цитата:

Цитата interminable
1.Как сделать, чтоб выбор воспринимался без нажатия Enter, т.е. нажал 1 и все пошло поехало... »

Использовать Choice (в ОС до Vista не включён в поставку, но доступен в комплектах Resource Kit'ов).

interminable 22-01-2014 19:55 2294334

А на моем примере как?

Iska 22-01-2014 20:39 2294374

Цитата:

Цитата interminable
А на моем примере как? »

Например, так (не проверялось):
читать дальше »
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

choice.exe /c 12 /m "BLACK press 1, WHITE press 2"
call :Choice%ErrorLevel%

endlocal
exit /b 0

:Choice0
        echo User break choice
        exit /b 0
:Choice1
        sqlplus /nolog @run.sql
        exit /b 0
:Choice2
        sqlplusw /nolog @run.sql
        exit /b 0
:Choice255
        echo Error while choice
        exit /b 1


interminable 23-01-2014 11:42 2294615

О ГУРУ ТЫ МЕНЯ СПАС!
Только 2 момента:
1.Нажимается только 1 или 2 другие не воспринимаются.
2.После запуска сиквела окно не закрывается. Оно то понятно, что в 1-м случае оно и не закроется так как сиквел запускается в этом же окне, а во 2-м случае открывается другое окно, но командный интерпритатор не закрывается.

p.s. буду очень благодарен за расшифровку строк:
setlocal enableextensions enabledelayedexpansion

exit /b 0

:Choice0 echo User break choice

:Choice255 echo Error while choice

Iska 23-01-2014 13:06 2294671

Цитата:

Цитата interminable
1.Нажимается только 1 или 2 другие не воспринимаются. »

Я что-то пропустил:
Цитата:

Цитата interminable
echo BLACK press 1, WHITE press 2.

If "%Ch%"=="1" (

If "%Ch%"=="2" ( »

?!

Цитата:

Цитата interminable
2.После запуска сиквела окно не закрывается. Оно то понятно, что в 1-м случае оно и не закроется так как сиквел запускается в этом же окне, а во 2-м случае открывается другое окно, но командный интерпритатор не закрывается. »

У меня нет Oracle. Мой код касался только:
Цитата:

Цитата interminable
1.Как сделать, чтоб выбор воспринимался без нажатия Enter, т.е. нажал 1 и все пошло поехало... »

Остальное я взял непосредственно из Вашего кода.

Цитата:

Цитата interminable
p.s. буду очень благодарен за расшифровку строк: »

Начните с чтения документации по «setlocal», «exit», «call».


Время: 02:57.

Время: 02:57.
© OSzone.net 2001-