2

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

谢谢, 罗特姆

4

2 回答 2

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");
于 2010-12-22T10:24:09.033 回答
1

Okkkk TJ是男人!:)

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

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

function runCmd()
{
wshShell.CurrentDirectory = "G:\\xxx\\xxx";
wshShell.run( "xxx.EXE xxx.psl abc" ); 
}
于 2010-12-23T16:24:03.013 回答