【问题标题】:hta/ javascript How to execute an application with relative pathhta/ javascript 如何使用相对路径执行应用程序
【发布时间】:2012-12-12 15:55:35
【问题描述】:

我正在构建一个 .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>

【问题讨论】:

    标签: javascript html wsh hta


    【解决方案1】:

    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 的引文(不幸的是现在坏了):

    "The CurrentDirectory returns a string that contains the fully qualified path of
    the current working directory of the active process."
    

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

    currentDirectoryWScript.Shell的一个属性,所以你可以在你的代码中使用WshShell,也可以设置工作目录。

    【讨论】:

    • 有没有办法在没有文件本身的情况下获取位置?
    • 嗯...我的代码就是这样做的。还是您的意思是获取没有window.location 对象的路径?
    • 非常感谢您的代码有效,但是当我在地图名称中放置空格而不是 _ 时,我得到了同样的错误。
    • 将整个路径字符串用双引号括起来,如下所示:var path = '"' + fullpath + '"';。要回答您的最后一条评论,location 对象中没有此类属性。
    猜你喜欢
    • 2021-06-07
    • 2014-04-04
    • 2016-08-30
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多