如果文件夹名称包含 space,HTA 脚本将不起作用

HTA script won't work if folder name contains a space

如果文件路径中的文件夹名称中包含 space,我正在寻求一些帮助,以了解为什么我的简单 HTA 应用程序将无法运行。

我的 HTA 有一个简单的按钮来启动子文件夹中的文本文件。

HTA 有一个脚本可以找到 HTA 文件的根文件夹。

如果我的 HTA 文件的位置是按钮下方的路径:

c:\Users\%MyUser%\Desktop\htatest2

如果文件夹名称更改为 "hta test2",则该按钮不起作用。

c:\Users\%MyUser%\Desktop\hta test2

下面是我的代码。

<html>
<head>
    <title>Application Executer</title>
    <HTA:APPLICATION ID="oMyApp" 
        APPLICATIONNAME="Application Executer" 
        BORDER="no"
        CAPTION="no"
        SHOWINTASKBAR="yes"
        SINGLEINSTANCE="yes"
        SYSMENU="yes"
        SCROLL="no"
        WINDOWSTATE="normal">

        <script type="text/javascript" language="javascript">
            var shell = new ActiveXObject("WScript.Shell");
            var rootdir = shell.currentDirectory;

            function RunFile() {
                WshShell = new ActiveXObject("WScript.Shell");
                WshShell.Run(rootdir+"/txt/text.txt", 1, false);
            }
        </script>

</head>
<body>
    <input type="button" value="Run Notepad" onclick="RunFile();" class="button" />
</body>
</html>

Run 执行写入命令行的第一个参数。您必须在参数中包含双引号。使用单引号连接以防止引号冲突,如下所示:

WshShell.Run('"' + rootdir + '/txt/text.txt' + '"', 1, false);