Как получить доступ к переменным среды в пакетном задании Windows? - PullRequest
2 голосов
/ 09 февраля 2012

Я пытаюсь прочитать данные для входа в систему из командной строки, чтобы выполнить серию сценариев загрузчика SQL *. Я могу видеть, что переменная была установлена ​​с помощью set v_ . Однако я не могу получить доступ к значениям.

Тестовый файл:

@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

1 Ответ

6 голосов
/ 10 февраля 2012

Удалите пробелы вокруг = в наборе операторов:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...