hta/javascript如何使用相对路径执行应用程序

hta/javascript如何使用相对路径执行应用程序,javascript,html,wsh,hta,Javascript,Html,Wsh,Hta,我正在构建一个.hta(使用javascript),我想从中启动几个应用程序 但是当我执行我的.hta时,我会收到错误消息“找不到文件” 代码如下: <script type="text/javascript" language="javascript"> function RunFile(path) { var relpath = window.location.href; var fullpath = relpath + path; WshShe

我正在构建一个.hta(使用javascript),我想从中启动几个应用程序

但是当我执行我的.hta时,我会收到错误消息“找不到文件”

代码如下:

<script type="text/javascript" language="javascript">
    function RunFile(path) {
    var relpath = window.location.href;
    var fullpath = relpath + path;

    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run(fullpath, 1, false);
    }

    RunFile("\file.exe");
</script>

函数运行文件(路径){
var relpath=window.location.href;
var fullpath=relpath+path;
WshShell=newActiveXObject(“WScript.Shell”);
Run(完整路径,1,false);
}
运行文件(“\file.exe”);

window.location.href还包括文件名和协议。试试这个:

var relpath = window.location.pathname.replace(/\\/g,'/').split('/');
relpath.pop();// JScript: relpath.length = relpath.length - 1;
relpath = relpath.join('/') + '/';
请注意,使用
/
代替
\
,并且使用
/
结束
relpath
也很方便,因此不需要将其添加到函数参数中

编辑

我不知道你在没有文件的情况下获取位置是什么意思,可能是这样(引用自Windows Sripting Technologies(不幸的是,现在已损坏):

例如,活动进程是正在运行的HTA,因此这将给出HTA文件的本地路径(不带文件名)


currentDirectory
WScript.Shell
的一个属性,因此您可以将其与代码中的
WshShell
一起使用,还可以设置工作目录。

window.location.href
也包括文件名和协议。请尝试以下操作:

var relpath = window.location.pathname.replace(/\\/g,'/').split('/');
relpath.pop();// JScript: relpath.length = relpath.length - 1;
relpath = relpath.join('/') + '/';
请注意,使用
/
代替
\
,并且使用
/
结束
relpath
也很方便,因此不需要将其添加到函数参数中

编辑

我不知道你在没有文件的情况下获取位置是什么意思,可能是这样(引用自Windows Sripting Technologies(不幸的是,现在已损坏):

例如,活动进程是正在运行的HTA,因此这将给出HTA文件的本地路径(不带文件名)


currentDirectory
WScript.Shell
的一个属性,因此您可以将它与代码中的
WshShell
一起使用,还可以设置工作目录。

有没有办法在不使用文件本身的情况下获取位置?嗯……我的代码就是这样做的。或者您的意思是获取一个没有
窗口的路径。位置
对象?非常感谢您的大部分代码都是有效的,但是当我在映射名中添加空格而不是u1;时,会出现相同的错误。请将整个路径字符串用双引号括起来,如下所示:
var path='“+fullpath+”“;
。为了回答您最后的评论,在
位置
对象中没有这样的属性。有没有办法在不使用文件本身的情况下获取位置?呃……我的代码就是这样做的。或者您的意思是在不使用
窗口的情况下获取路径。位置
对象?非常感谢您的代码,但是当我在地图名称中添加空格时s而不是u,我得到了相同的错误。将整个路径字符串用双引号括起来,如下所示:
var path='“'+fullpath+'”;
。要回答您的上一条评论,
location
对象中没有这样的属性。