我正在编写HTA脚本" Opslag.hta" ,我想从中打开另一个HTA脚本" update.hta&# 34;
我试图打开" update.hta" ,它位于主脚本的子文件夹(include)中:
Set objShell = CreateObject("WScript.Shell")
UpdatePath = "include\update.hta"
objShell.Run (chr(34) & UpdatePath & chr(34))
但是我收到错误"找不到文件" ,当我提示是否要继续运行脚本并按& #34;是" " update.hta" 实际打开。
我试图移动" update.hta"脚本到不同的位置,甚至试图指定" update.hta"的完整路径。在" UpdatePath"。我尝试过使用 vbQuote ,双反斜杠(因为" Opslag.hta"位于带空格的路径中)和我能找到的所有可能的解决方案,没有成功。
这个帖子:File not found when using objshell.run -- vbscript,不幸的是没有帮助我。
我在Windows 7,64位上运行 - 不知道这与它有什么关系。
我真的希望有人在这里有答案,因为我要疯了! =)
提前谢谢!
答案 0 :(得分:1)
要求相关的评论者发布他们的答案以便您将其标记为已回答,这可能是值得的。
每当我使用路径时,我都会对使用相对路径感到偏执。作为一般规则,尝试使用绝对路径名而不是相对路径。
对于您的具体示例,我们应尝试从update.hta
派生Opslag.hta
的绝对路径。我们可以使用HTML Dom中的document.location来完成此操作。例如,在我的计算机上,Opslag.hta
下有C:\Temp\HTA\Opslag.hta
:
document.href
返回"file:///C:/Temp/HTA/Opslag.hta"
"C:\Temp\HTA\Opslag.hta"
"C:\Temp\HTA"
文件夹。另一个提示是Chr(34)与""""相同。通常,如果要在VBScript中转义双引号,则使用一对双引号。例如如果您希望John says: "Hello!"
作为VBScript字符串,那么它是"John says: ""Hello!"""
。
以下是说明结果的示例代码:
<!DOCTYPE html>
<head>
<title>Opslag.hta test</title>
</head>
<body>
</body>
<script language="VBScript">
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
htaPath = Replace(Replace(document.location, "file:///", ""), "/", "\")
htaFolder = objFSO.GetParentFolderName(htaPath)
updatePath = htaFolder + "\include\update.hta"
MsgBox updatePath
objShell.Run """" & updatePath & """"
</script>
</html>
顺便说一下,这只是一个例子。我通常不会在<script>
之后放置大型脚本<body>
但是,如果<script>
与HTML Document
一起使用,等待整个<body>
,这通常是一种很好的做法。要加载的DOM,即将其放在==
之后。
答案 1 :(得分:0)
注意:我不确定这是一个真正的答案,但是根据要求...这就是我看到它的方式:
阅读代码
Set objShell = CreateObject("WScript.Shell")
UpdatePath = "include\update.hta"
objShell.Run (chr(34) & UpdatePath & chr(34))
有两种选择
update.hta
。在这种情况下,将出现错误,并且不会打开hta
文件update.hta
。在这种情况下,将不会出现错误,并且将打开hta
文件但是这些替代方案都没有与观察到的行为相匹配。 hta
文件已打开,因此找到了。但是显示错误。由于调用者中的代码不包含任何可能导致错误的内容,因此错误的来源应该在被调用的文件中。