0

次のコードは、ユーザー名、パスワード、およびデータベース インスタンスの入力を求めて、バッチ ファイルを介して Oracle データベースに接続するためのものです。私が望むのは、資格情報のいずれかが無効な場合は cmd 自体を終了することです。それ以外の場合は、通常どおり続行する必要があります。

@ECHO OFF
:START
set /p U="Enter Username(User ID):"
set /p P="Enter Password(Password@o1234abc):
: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

解決策を提案してください。

4

1 に答える 1

1

次のようなことができます。

@echo off
setlocal enableDelayedExpansion
set /p U="Enter Username(User ID):" 
set /p P="Enter Password(Password@o1234abc):
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

クレデンシャルが正しい場合は、行をスキップして終了し、残りを実行します。いずれかのクレデンシャルが間違っている場合は、終了行にヒットして cmd を終了します。

特殊文字の遅延拡張を提案した @jeb に感謝します。以下のコメントを参照してください。

お役に立てれば。

于 2012-06-15T15:00:16.003 に答える