You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTA脚本中WshShell调用子目录相对路径失效问题求助

解决HTA脚本相对路径调用子文件夹文件失效的问题

问题根源

WScript.Shell.Run 使用的相对路径是系统当前工作目录,而非HTA脚本本身所在的目录。调用同目录文件时,工作目录恰好与脚本目录一致,所以能正常执行;但调用子文件夹文件时,路径解析会基于不确定的工作目录,导致失效。

解决方案

通过获取HTA脚本自身的绝对路径,拼接子文件夹目标文件的路径,确保路径始终基于脚本所在位置,适配多台机器环境。

方法1:纯字符串处理路径

修改Trian函数如下:

function Trian() {
    // 获取当前HTA的本地路径(格式为 /C:/xxx/xxx.hta)
    var htaPath = document.location.pathname;
    // 替换路径分隔符为Windows格式,去掉开头的斜杠
    htaPath = htaPath.replace(/\//g, "\\").substring(1);
    // 提取当前HTA所在的目录
    var htaDir = htaPath.substring(0, htaPath.lastIndexOf("\\"));
    // 拼接目标HTA的完整路径
    var targetPath = htaDir + "\\WIsWRLK\\Triangulacao\\trian.hta";
    
    var WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run(targetPath, 1, false);
}

方法2:使用FileSystemObject处理路径

借助Scripting.FileSystemObject更安全地处理路径(推荐,避免字符串拼接的潜在错误):

function Trian() {
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    // 转换HTA路径为Windows本地路径
    var htaPath = document.location.pathname.replace(/\//g, "\\").substring(1);
    // 获取当前HTA所在目录
    var htaDir = fso.GetParentFolderName(htaPath);
    // 构建目标文件的完整路径
    var targetPath = fso.BuildPath(htaDir, "WIsWRLK\\Triangulacao\\trian.hta");
    
    var WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run(targetPath, 1, false);
}

额外说明

  • 两种方法都能确保路径基于当前HTA脚本的位置,不受系统工作目录影响,适合多机器部署。
  • 若需要调用上级目录或其他层级的文件,只需调整拼接的路径片段即可。

内容的提问来源于stack exchange,提问作者Hebert Mateus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:53:37