Javascript wshell.run не работает должным образом - PullRequest
2 голосов
/ 22 декабря 2010

Я использую HTA, и в нем есть функция, которая должна запускать командную строку с помощью wshell.run. Если я пишу эту строку в утилите Windows «Выполнить», она работает нормально, я хочу, чтобы она также работалав 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" );
}

Ошибка Iget находится в приложении xxx.EXE и говорит "не удалось открыть файл aaa.psl не найден".

Спасибо, Rotem

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Я удивлен, что программа 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 голос
/ 23 декабря 2010

Окккк TJ это человек !!:)

Я, наконец, сделал это с вашей помощью, заменив exec для запуска:

Это окончательный (и рабочий) код:

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