gpt4 book ai didi

javascript - 从 Hyperion Interactive Reporting Studio 内的 Javascript 将参数传递到批处理文件

转载 作者:行者123 更新时间:2023-11-28 15:52:32 25 4
gpt4 key购买 nike

在 Hyperion Reporting Studio 内部,我有一个文档级脚本,我希望在其中调用批处理文件并将参数传递给批处理文件。

这是我的代码:

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat"
var Email = "my.email@xxx.com"
var Subject = "My Subject"
var Body = "My Body"
var Attach = "W:\Maughan.xls"

Application.Shell(Path + " " + Email + " " + Subject + " " + Body + " " + Attach)

此代码不会打开文件,但会给出错误消息文件名、目录名或卷标语法不正确。

如果我单独传递Path,我的bat文件就会运行(因为没有传递参数,所以会发出警告),并且当我从Shell命令运行相同的代码时,它会完美地工作。

任何人都可以提供有关传递到 Application.Shell 方法的正确语法的任何见解,以便它读取我的参数并将它们传递到批处理文件吗?我在网上查了很多资料都没有结果。

最佳答案

因为 var Attach = "W:\Maughan.xls" 应该是 var Attach = "W:\\Maughan.xls"

在字符串中,转义字符 \ 只是转义下一个字符,因此 Attach 将仅包含 W:Maughan.xls。要添加 \,您需要使用 \ 两次。

更新:

在这种特殊情况下可能没有区别,因为 W:Maughan.xls 意味着在驱动器的当前目录中查找 Maughan.xls W 最有可能是 \

但绝对重要的是围绕参数主题和正文的引号。在您的代码中构造的命令是

W:\directory\Reference_Files\scripts\vbs\SendEmail.bat my.email@xxx.com My Subject My Body W:Maughan.xls

我确信bat文件无法区分主题和正文(除非它期望每个单词中正好有两个单词),所以正确的命令很可能是

W:\directory\Reference_Files\scripts\vbs\SendEmail.bat my.email@xxx.com "My Subject" "My Body" W:\Maughan.xls

您可以通过在cmd中运行上面的命令来检查它。

要构造它,参数应修改如下:

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat"
var Email = "my.email@xxx.com"
var Subject = "\"My Subject\""
var Body = "\"My Body\""
var Attach = "W:\\Maughan.xls"

(此修正的灵感来自impinball的回答)

关于javascript - 从 Hyperion Interactive Reporting Studio 内的 Javascript 将参数传递到批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989157/

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