VBEエンコーダセクションが動作します(以前の経験からこのファイルでは必要なファイルが見つかりませんでした)。ファイルは%temp%
フォルダにありますので、パスに空白がありますが、 MsgBox
には正しいファイルが表示されていますが、その存在を確認できますが、コードは失敗します。fso.GetFile
VBScriptでファイルを見つけることができません
これは、ターゲットファイル(フルパス)で呼び出される大きなスクリプトの一部ですターゲットファイルは呼び出し元のスクリプトによってあらかじめ作成されています
メインスクリプト(対象ファイルで呼び出されます):
Set fso = CreateObject("Scripting.FileSystemObject")
Set wshShell = WScript.CreateObject("WScript.Shell")
textFile = WScript.Arguments(0)
GetExtension = fso.GetExtensionName(fso.GetFileName(textFile))
If LCase(GetExtension) = "vbs" Then
Set oFilesToEncode = WScript.Arguments
Set oEncoder = CreateObject("Scripting.Encoder")
For i = 0 To oFilesToEncode.Count - 1
file = """" & Trim(oFilesToEncode(i)) & """"
MsgBox file
If fso.FileExists(Left(file, Len(file) - 3) & "vbe") Then fso.DeleteFile(Left(file, Len(file) - 3) & "vbe")
Set oFile = fso.GetFile(file)
Set oStream = oFile.OpenAsTextStream(1)
sSourceFile = oStream.ReadAll
oStream.Close
sDest = oEncoder.EncodeScriptFile(".vbs", sSourceFile, 0, "")
sFileOut = Left(file, Len(file) - 3) & "vbe"
Set oEncFile = fso.CreateTextFile(sFileOut)
oEncFile.Write sDest
oEncFile.Close
Next
End If
WScript.Quit
スクリプトを呼び出すのセクション:私はそれが軌道に乗るためにexeファイルへのパスをハードコーディング使用して試してみました
Do While fso.FileExists(strTempVBS) = False
Loop
strKey = "HKEY_CLASSES_ROOT\Engineers-Toolbox\Multi-Tool\Installed\Path\"
value = wshShell.RegRead(strKey)
arg = " " & strTempVBS
running = "C:\Custom\Multi-Tool\Multi-Tool.exe " & """" & arg & """"
wshShell.Run running, True
、「値が」メインスクリプトへのパスが含まれています。
エラーコードがありますか?あなたは完全なファイルパスを与えることができます(拡張を含む)? – Alexander
'エラーコード800a0035ファイルが見つかりません'フルパスは "C:\ Users \ John Doe \ AppData \ Local \ Multi-Tool \ observe.vbs" – BertB