2012-02-09 119 views
2

我正在尝试从命令提示符处读取登录cridentials以执行一系列SQL * Loader脚本。
我能够看到使用set 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 

另一种方法是改变ECHO语句包含相同数量的尾随空格作为变量名和=标志之间使用SET语句:

@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 2012-02-09 20:47:23

相关问题