Javascript wshell.run无法正常工作

时间:2010-12-22 10:17:11

标签: javascript hta wsh

我正在使用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文件”。

谢谢, ROTEM

2 个答案:

答案 0 :(得分:5)

我很惊讶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 :(得分:1)

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

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

这是最终的(也是正常的)代码:

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