Passing Parameters to a Batch File from Javascript Inside Hyperion Interactive Reporting Studio

北城以北 提交于 2019-12-12 02:39:06

问题


Inside of Hyperion Reporting Studio I have a document level script where I wish to call a batch file and pass arguments to the batch file.

Here is the code I have:

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)

This code does not open the file, but gives the error message The filename, directory name, or volume label syntax is incorrect.

If I pass Path by itself my bat file runs (giving me a warning because no parameters are passed) and I when I run the same code from the Shell Command, it works flawlessly.

Can anyone provide any insight into the correct syntax to pass into the Application.Shell method so that it reads my parameters and passes them to the batch file? I have been searching high and low online to no avail.


回答1:


Because var Attach = "W:\Maughan.xls" should be var Attach = "W:\\Maughan.xls".

Within a string the escape character \ just escapes the next character so Attach will contain just W:Maughan.xls. To add \ you need to use \ twice.

Update:

It may have no difference in this particular case, because W:Maughan.xls means to look for Maughan.xls in the current directory on the drive W which is most likely \.

But what is definitely important are quotes around the parameters Subject and Body. In you code the constructed command is

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

I sure that the bat file cannot distinguish between the subject and body (unless it expect exactly two words in each of them) so the right command most likely is

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

and you can check it by running the command above in cmd.

To construct it the parameters should be modified as follows:

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"

(this correction was inspired by impinball's answer)




回答2:


Try putting an escaped quote on either side of the variable values. Depending on where the directory is, that may make a difference. The outside quotes in strings aren't included in the string values in JavaScript. Here's an example of what I'm talking about:

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

instead of

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


来源:https://stackoverflow.com/questions/19989157/passing-parameters-to-a-batch-file-from-javascript-inside-hyperion-interactive-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!