gpt4 book ai didi

batch-file - 如何在 Windows 批处理作业中访问环境变量?

转载 作者:行者123 更新时间:2023-12-03 16:48:45 24 4
gpt4 key购买 nike

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

最佳答案

删除 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

另一种方法是将 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

关于batch-file - 如何在 Windows 批处理作业中访问环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9217793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com