0

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)

このコードはファイルを開きませんが、エラーメッセージを表示しますThe filename, directory name, or volume label syntax is incorrect.

単独でバッチ ファイルを実行すると (パラメーターが渡さPathれないため、警告が表示されます)、シェル コマンドから同じコードを実行すると、問題なく動作します。

Application.Shellパラメータを読み取ってバッチファイルに渡すように、メソッドに渡す正しい構文について誰かが洞察を提供できますか? 私はオンラインで高低を検索してきましたが、役に立ちませんでした。

4

2 に答える 2

2

あるvar Attach = "W:\Maughan.xls"べきだからvar Attach = "W:\\Maughan.xls"

文字列内では、エスケープ文字\は次の文字をエスケープするだけなのでAttachW:Maughan.xls. 追加するには、 2 回\使用する必要があります。\

アップデート:

この特定のケースでは違いはないかもしれませW:Maughan.xlsん.Maughan.xlsW\

しかし、間違いなく重要なのは、パラメーター Subject と Body を引用符で囲むことです。あなたのコードでは、構築されたコマンドは

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

Batファイルは件名と本文を区別できないと確信しているため(それぞれに正確に2つの単語が含まれていると想定しない限り)、正しいコマンドはおそらく次のとおりです

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"

(この修正はインピンボールの答えに触発されました)

于 2013-11-14T21:57:30.280 に答える
2

変数値の両側にエスケープされた引用符を入れてみてください。ディレクトリの場所によっては、違いが生じる場合があります。文字列の外側の引用符は、JavaScript の文字列値には含まれません。これが私が話していることの例です:

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

それ以外の

var Path = "W:\\directory\\Reference_Files\\scripts\\vbs\\SendEmail.bat"
于 2013-11-14T23:42:33.220 に答える