2012-02-09 7 views
2

一連のSQL * Loaderスクリプトを実行するために、コマンド・プロンプトからログイン・クレデンシャルを読み取ろうとしています。
を使って変数が設定されているのがわかりました。v_です。しかし、私は値にアクセスすることはできません。Windowsバッチジョブで環境変数にアクセスするにはどうすればよいですか?

テストファイル:

@echo off 

set /P v_user = Username: 
set /P v_pass = Password: 
set /P v_db = Database: 

ECHO Username: "%V_USER%" 
ECHO Password: "%V_PASS%" 
ECHO Database: "%V_DB%" 

set v_ 

pause 

実際の結果結果:

Username: 1 <-- Input 
Password: 2 <-- Input 
Database: 3 <-- Input 
Username: "" 
Password: "" 
Database: "" 
v_db =3 
v_pass =2 
v_user =1 

期待される結果結果:

Username: 1 <-- Input 
Password: 2 <-- Input 
Database: 3 <-- Input 
Username: "1" 
Password: "2" 
Database: "3" 
v_db =3 
v_pass =2 
v_user =1 

使用目的:

@echo off 

set /P v_user = Username: 
set /P v_pass = Password: 
set /P v_db = Database: 

sqlldr %v_user%/%v_pass%@%v_db% CONTROL='TABLE_T1.ctl' log='logs/TABLE_T1.log' bad='bad/TABLE_T1.bad' skip=1 
sqlldr %v_user%/%v_pass%@%v_db% CONTROL='TABLE_T2.ctl' log='logs/TABLE_T2.log' bad='bad/TABLE_T2.bad' skip=1 

pause 

答えて

5

セット文で=周りのスペースを削除します。

echo off 

set /P v_user=Username: 
set /P v_pass=Password: 
set /P v_db=Database: 

ECHO Username: "%V_USER%" 
ECHO Password: "%V_PASS%" 
ECHO Database: "%V_DB%" 

set v_ 

pause 

他の代替は、変数名と=記号の間で使用されるSET文として末尾のスペースの同じ数を含むようにECHO文を変更することです:

@echo off 

set /P v_user = Username: 
set /P v_pass = Password: 
set /P v_db = Database: 

ECHO Username: "%V_USER %" 
ECHO Password: "%V_PASS %" 
ECHO Database: "%V_DB %" 

set v_ 

pause 
+0

ありがとうございました。スペースを削除しました。私はあまりにも間隔が重要でないjavaに慣れています。 – ScrappyDev

関連する問題