Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Hyperion Interactive Reporting Studio中从Javascript向批处理文件传递参数_Javascript_Batch File_Hyperion - Fatal编程技术网

在Hyperion Interactive Reporting Studio中从Javascript向批处理文件传递参数

在Hyperion Interactive Reporting Studio中从Javascript向批处理文件传递参数,javascript,batch-file,hyperion,Javascript,Batch File,Hyperion,在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.

在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
意味着在驱动器
W
的当前目录中查找
Maughan.xls
,这很可能是
\

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

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的回答中得到启发的)

因为
var-Attach=“W:\Maughan.xls”
应该是
var-Attach=“W:\\Maughan.xls”

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

更新:

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

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

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中的字符串值中。下面是我所说的一个例子:

var Path = "\"W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat\""
而不是

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat"

尝试在变量值的任一侧放置转义引号。根据目录所在的位置,这可能会有所不同。字符串中的外部引号不包含在JavaScript中的字符串值中。下面是我所说的一个例子:

var Path = "\"W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat\""
而不是

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat"

谢谢你的回复,但这并没有解决问题。另外,由于这是
.bat
文件的一个参数,而不是文件名,我认为它不需要escape\n这个更新的答案让我找到了需要的地方。不过,要注意的是,我还必须将转义\添加到
var路径
,就像下面的@impinball-answer一样。@AlexAtNet谢谢!提醒一下,如果不是每个人都映射了相同的驱动器号,您可能希望选择使用UNC路径名。此外,养成将路径名加引号的习惯,否则可能会遇到空格问题,因为如果没有引号,有些东西可能仍然希望使用8.3短名称。感谢您的回复,但这并没有解决问题。另外,由于这是
.bat
文件的一个参数,而不是文件名,我认为它不需要escape\n这个更新的答案让我找到了需要的地方。不过,要注意的是,我还必须将转义\添加到
var路径
,就像下面的@impinball-answer一样。@AlexAtNet谢谢!提醒一下,如果不是每个人都映射了相同的驱动器号,您可能希望选择使用UNC路径名。另外,养成把路径名放在引号里的习惯,否则你可能会遇到空格的问题,因为如果你没有引号,有些东西可能仍然希望你使用8.3个短名称。+1让我走上正确的方向,尽管这并不能完全解决问题。我知道在这两个答案之间(考虑到当时我不确定我是否能编辑它或不考虑我的声誉),它会出来。+1是为了让我走上正确的方向,尽管它没有完全解决问题。我知道在这两个答案之间(考虑到当时我不确定我是否能编辑它或不考虑我的声誉),它会出来。