Войти

Показать полную графическую версию : Не ждать подтверждения выбора переменной


interminable
22-01-2014, 19:28
Есть кодик:
@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
1.Как сделать, чтоб выбор воспринимался без нажатия Enter, т.е. нажал 1 и все пошло поехало... »
Использовать Choice (http://technet.microsoft.com/en-us/library/cc732504.aspx) (в ОС до Vista не включён в поставку, но доступен в комплектах Resource Kit'ов).

interminable
22-01-2014, 19:55
А на моем примере как?

Iska
22-01-2014, 20:39
А на моем примере как? »
Например, так (не проверялось):
@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
О ГУРУ ТЫ МЕНЯ СПАС!
Только 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
1.Нажимается только 1 или 2 другие не воспринимаются. »
Я что-то пропустил:
echo BLACK press 1, WHITE press 2.

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

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

2.После запуска сиквела окно не закрывается. Оно то понятно, что в 1-м случае оно и не закроется так как сиквел запускается в этом же окне, а во 2-м случае открывается другое окно, но командный интерпритатор не закрывается. »
У меня нет Oracle. Мой код касался только:
1.Как сделать, чтоб выбор воспринимался без нажатия Enter, т.е. нажал 1 и все пошло поехало... »
Остальное я взял непосредственно из Вашего кода.

p.s. буду очень благодарен за расшифровку строк: »
Начните с чтения документации (http://www.microsoft.com/en-us/download/details.aspx?id=2632) по «setlocal», «exit», «call».




© OSzone.net 2001-2012