2013-11-14 1 views
0

Внутри Hyperion Reporting Studio У меня есть сценарий уровня документа, где я хочу вызвать командный файл и передать аргументы в пакетный файл.Передача параметров в пакетный файл из Javascript Inside Hyperion Interactive Reporting Studio

Вот код, у меня есть:

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat" 
var Email = "[email protected]" 
var Subject = "My Subject" 
var Body = "My Body" 
var Attach = "W:\Maughan.xls" 

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

Этот код не открывает файл, но выдает сообщение об ошибке The filename, directory name, or volume label syntax is incorrect.

Если я прохожу Path сам по себе моим пробегам летучей файле (давая мне потому что никаких параметров не передано), и я, когда я запускаю тот же код из командной оболочки, работает безупречно.

Может ли кто-нибудь дать представление о правильном синтаксисе для передачи в метод Application.Shell, чтобы он считывал мои параметры и передавал их в пакетный файл? Я искал высоко и низко онлайн безрезультатно.

ответ

2

Потому что var Attach = "W:\Maughan.xls" должно быть var Attach = "W:\\Maughan.xls".

Внутри строки символ эвакуации \ просто ускользает от следующего символа, поэтому Attach будет содержать только W:Maughan.xls. Чтобы добавить \, вам нужно использовать \ дважды.

Update:

Он не может иметь никакого значения в данном случае, потому что W:Maughan.xls значит искать Maughan.xls в текущем каталоге на диске W, который, скорее всего, \.

Но, безусловно, важны котировки вокруг параметров Предмет и Тело. В вас закодировать построена команда

W:\directory\Reference_Files\scripts\vbs\SendEmail.bat [email protected] My Subject My Body W:Maughan.xls 

Я уверен, что файл летучая мышь не может различить между субъектом и телом (если не ожидать ровно два слова в каждом из них), так что правая команда, скорее всего, является

W:\directory\Reference_Files\scripts\vbs\SendEmail.bat [email protected] "My Subject" "My Body" W:\Maughan.xls 

, и вы можете проверить его, выполнив команду выше в cmd.

Чтобы построить его параметры должны быть изменены следующим образом:

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat" 
var Email = "[email protected]" 
var Subject = "\"My Subject\"" 
var Body = "\"My Body\"" 
var Attach = "W:\\Maughan.xls" 

(эта поправка была вдохновлена ​​ответом impinball в)

+0

спасибо за ваш ответ, но это не решило проблему. Кроме того, поскольку это параметр для '.bat', а не имя файла, я не думаю, что ему нужен побег \ –

+0

Этот обновленный ответ получил меня там, где мне нужно. Хотя, к сведению, мне пришлось добавить escape \ в 'var Path', как и в ответе @impinball ниже. –

+0

@AlexAtNet Спасибо! –

2

Попробуйте положить сбежавшую цитату по обе стороне от значений переменных. В зависимости от того, где находится каталог, это может иметь значение. Внешние кавычки в строках не включены в строковые значения в JavaScript. Вот пример того, что я говорю о:

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

вместо

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

+1 за то, что он меня в правильном направлении, хотя он не решил его полностью. –

+0

Я знал, что между двумя ответами (учитывая, что я не был уверен, смогу ли я отредактировать его или не дать свою репутацию в то время), оно получилось. –