【发布时间】:2020-01-17 19:36:49
【问题描述】:
我有一个服务帐户,我正在尝试为其分配一个变量 - 我无法更改密码。
密码是“密码%6k”
我重复 % 字符来转义
SET $9=password%%6k
REM $9
Cmd Output:
password%6k
call startmaxl.bat %$9%
-> In MAXL
echo "$9";
MAXL Output:
passwordK
这导致我的 MAXL 批处理由于凭据不正确而失败 - 如何将格式正确的密码传递给 MAXL 引擎?
新代码:
SET "$9=password%%6k"
echo $9=%9%
CALL echo $9=%9%
Cmd Output:
echo $9=password%6k
MAXL:
shell echo "$9";
MAXL Output: password%6k
-- This is correct now
批次然后期待退出 - 我必须指定这个完整路径来启动 MAXL
Batch File Currently:
echo Beginning Test at %time% on %date% > D:\Logs\TEST_START.log
SET (parameters 1-8)
SET "$9=password%%6k"
echo $9=%9%
CALL echo $9=%9%
D:\Oracle\Middleware\user_projects\epmsystem1\EssbaseServer\essbaseserver1\bin\startMaxl.bat test.msh %$1% %$2% %$3% %$4% %$5% %$6% %$7% %$8% %$9%
echo Ending Test at %time% on %date% > D:\Logs\TEST_END.log
我目前能够传递正确的密码,构建 essbase 多维数据集的一部分,但在 MAXL 注销并跳过最后一个 TEST_END 日志后,批处理立即退出。
有什么办法可以代替 CALL 吗?我将如何进行设置
【问题讨论】:
-
如果
%%不起作用,请尝试转义字符^%。 -
当您在命令提示符下工作时,(这不是批处理文件),
SET $9=password%%6k应该是Set "$9=password%6k",call startmaxl.bat %$9%应该是 @987654329 @ 和内部startmaxl.bat%~1将表示最初设置为名为$9的变量的值。在startmaxl.bat中,您应该在需要删除封闭双引号的地方或必要时使用%~1,并在需要它们的地方使用%1,因为它已经被双引号传递了。