2012-06-15 4 views
0

다음 코드는 사용자 이름, 암호 및 데이터베이스 인스턴스를 묻는 메시지를 표시하여 배치 파일을 통해 Oracle 데이터베이스에 연결하기위한 코드입니다. 내가 원하는 것은 자격 증명 중 하나라도 유효하지 않으면 cmd 자체에서 빠져 나가는 것입니다. 그렇지 않으면 정상적으로 진행해야합니다.Oracle 데이터베이스 연결시 오류 발생시 cmd에서 종료

@ECHO OFF 
:START 
set /p U="Enter Username(User ID):" 
set /p P="Enter Password([email protected]): 
:NEXT 
set /p a="Do you want to display details of 1a?(y/n)" 
ECHO "%a%" 
if "%a%" == "y" sqlplus %U%/%P% @".\AB_1a.sql" 
if "%a%" == "n" goto A 
set /p id1= "Please enter ID for 1a(press 's' to SKIP):" 
if "%id1%" == "s" goto A 
sqlplus %U%/%P% @".\AB_.sql" %id1% 
goto A 
:End 

어떤 해결책을 제안하십시오.

답변

1

당신이 뭔가를 할 수 있습니다 :

@echo off 
setlocal enableDelayedExpansion 
set /p U="Enter Username(User ID):" 
set /p P="Enter Password([email protected]): 
rem Check creds! 
if "!U!" == "JoeBloggs" if "!P!" == "Pa$$w0rd" goto :CREDSOK 
exit >nul 

:CREDSOK 
set /p a="Do you want to display details of 1a?(y/n)" 
if "%a%" == "y" sqlplus %U%/%P% @".\AB_1a.sql" 
if "%a%" == "n" goto A 
set /p id1= "Please enter ID for 1a(press 's' to SKIP):" 
if "%id1%" == "s" goto A 
sqlplus %U%/%P% @".\AB_.sql" %id1% 
goto A 
:End 

creds 그것이 creds 중 하나가 잘못된 경우가 출구 라인을 명중하고 cmd를 종료합니다 종료하고 나머지는 실행 라인을 건너 뜁니다 올바른 경우 .

특수 문자에 지연된 확장을 제안한 @jeb에게 감사드립니다. 아래 주석을 참조하십시오.

희망이 도움이됩니다.

+0

다음과 같은 오류가 발생합니다. "현재 예상치 못한 설정입니다."실제로 Oracle 클라이언트 데이터베이스에 액세스 할 수 없어 % actualusername %에 아무 것도 저장할 수 없습니다. 도와주세요. – user1458830

+0

@ user1458830 나는 내 대답을 훨씬 단순하게 바꿨다. 나는 지금 당신이 뭘하려고하는지 이해하고 있다고 생각한다. 또한이 파일이 전체 배치 파일입니까? 나는'A' 라벨을 보지 못했고'End' 라벨은 어디서나 사용 되었습니까? 또한 NEXT 레이블을 사용하는 것을 볼 수 없어서 NEXT 레이블을 대체했습니다. –

+0

지연된 확장으로 전환해야합니다. 특히 'IF'! U! ' == "JoeBloggs" "! P!" == "비공개 입력 또는 특수 문자가 포함 된 입력에 대해 안전하지 않은"goto : CRDSOK " – jeb

관련 문제