2017-06-17 28 views
0

実行可能ファイルを呼び出すことができるVBScriptファイルを書き留めていません。文字列リテラルの二重引用符の構文に縛られています。指定されたファイルが見つかりません - vbscriptから実行可能な実行可能ファイル

この行は、正しく実行可能ファイルを呼び出す行を記述することになっている:

Print #PayLoadFile, "  WshShell.Run """ & exePath & """ " 

exePathは、実行可能ファイルへの変数の保持・パスであり、それは正しいです。

は、上記の行は次のようにVBSへの書き込みを取得しよう:

WshShell.Run """C:\Users\John Doe\test.exe""" 

私は実行の間"""でファイルを編集し、手動でVBScriptを実行すると、私は正しい結果を得ますか。

しかし、それはシステムのエラーは、指定されたファイルを見つけることができませんにつれて代わりにそれを書き込み:文字列リテラル内のVBScriptの二重引用符で

WshShell.Run "C:\John Doe\test.exe" 
+0

'' ''を得るためにChr(34)を使ってみましたか? "WshShell.Run"&Chr(34)& "C:\ Users \ John Doe \ test.exe"&Chr(34) ' –

+0

を試してみてください。正しい結果が得られたと言う人もいます........ "WshShell.Run" "C:\ Users \ John Doe \ test.exe" "" 'のようにしてください。 – GTAVLover

+0

私はChr(34)を試しましたが、動作しませんでした。私が持っている問題は、私にはっきりさせてください。 3つの二重引用符でvbshel​​lの中でコマンドを実行すると、意図したとおりに動作します。問題:WordのVBAマクロ関数の内部に親コードがあり、マクロ関数がvbscriptファイルをVBAから完全に分離してファイルシステムに書き込もうとしているため、次の行が書き込まれています。 'WshShell.Run" "" C:\ Users \ John Doe \ test.exe "" "' – Robert

答えて

0

を自身のリテラル文字列は、一対で囲む必要がありますので、エスケープする必要があります二重引用符。エスケープは二重引用符を倍にすることで行われます。したがって、VBA文の

Print #PayLoadFile, "  WshShell.Run """ & exePath & """ " 
'          ^^    ^^ these double quotes 

は、二重引用符の単一セットでのパスでのVBScriptステートメントを作成します。VBScriptファイル内の二重引用符の必要な追加の二組を取得するには

WshShell.Run "C:\Users\John Doe\test.exe" 
'   ^      ^     become these double quotes 

(その意志パスを二重引用符でシェルに入れてください)、さらに8つの二重引用符をVBAステートメントに追加する必要があります:

Print #PayLoadFile, "  WshShell.Run """"""" & exePath & """"""" " 
'          ^^^^    ^^^^ 
関連する問題