我正在使用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
答案 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" );
}