【问题标题】:Javascript wshell.run not working properlyJavascript wshell.run 无法正常工作
【发布时间】:2010-12-22 10:17:10
【问题描述】:

我正在使用 HTA,其中我有一个函数应该使用 wshell.run 运行命令行,如果我在 Windows 'Run' util 中编写此行,它工作正常,我希望它也能工作在 HTA 中使用 wshell.run。

该行是:

C:\xxxx\xxx\xxx.EXE aaa.psl abc

(这里的名字是 xxx - 不是在真正的代码中..)

在我使用的 javascript 代码中:

function runCmd()
{
 wshShell.exec( "C:\xxxx\xxx\xxx.EXE aaa.psl abc" );
}

我得到的错误是在 xxx.EXE 应用程序中显示 “无法打开 aaa.psl 文件未找到”。

谢谢, 罗特姆

【问题讨论】:

    标签: javascript hta wsh


    【解决方案1】:

    我很惊讶 xxx.EXE 程序正在运行。您需要在命令中转义那些反斜杠:

    wshShell.Exec( "C:\\xxxx\\xxx\\xxx.EXE aaa.psl abc" );
    //                ^-----^----^--- here
    

    如果你在 aaa.psl 文件名中做同样的事情,那是你的问题。

    如果您没有将完整路径传递给 aaa.psl 文件,那么大多数程序(不是全部)都会期望它位于 当前目录,因此您需要确保您已正确设置当前目录(尽管使用绝对路径可能是更好的选择)。

    例如,下面是一个告诉记事本编辑文件的示例:

    shell = WScript.CreateObject("WScript.Shell");
    shell.Exec("c:\\windows\\system32\\notepad.exe c:\\temp\\temp.txt");
    

    ...或通过当前目录:

    shell = WScript.CreateObject("WScript.Shell");
    shell.CurrentDirectory = "c:\\temp";
    shell.Exec("c:\\windows\\system32\\notepad.exe temp.txt");
    

    【讨论】:

    • +1 这可能是问题所在。您可以使用wshShell.CurrentDirectory 属性设置工作目录。
    • @Andy E:奇怪的是,我只是添加了一个示例... :-)
    • 嘿,然后再+1。不幸的是,我必须先删除之前的 +1,然后才能添加第二个 ;-)
    • 嗨,关于反斜杠,恐怕这不是真的。如果你写 '/' 用一个斜杠就可以了,否则如果你写 '\' 所以你需要使用 '\\' 这就是它工作的原因:) 现在它像之前一样打开应用程序但它只是退出而没有任何提示消息.. 更多想法?谢谢!
    • 如果这是实际代码,那么我已经指出了问题所在——您需要转义反斜杠并确保在发出 @987654327 时位于正确的目录中@ 或提供aaa.psl 文件的完整路径。
    【解决方案2】:

    Okkkk T.J.是男人!! :)

    我终于在你的帮助下通过替换 exec 来运行它:

    这是最终的(和工作的)代码:

    function runCmd()
    {
    wshShell.CurrentDirectory = "G:\\xxx\\xxx";
    wshShell.run( "xxx.EXE xxx.psl abc" ); 
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-23
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 2012-12-18
      相关资源
      最近更新 更多