Вызов cmd.exe c параметрами из JavaScript'a
Друзья, здравствуйте! У меня такая заморочка: 1. Есть JavaScript из которого нужно вызвать cmd.exe с параметрами (см. прикрепленный файл и ниже). Я уже все перепробовала, но остановилась на пока не работающем варианте кода =((((((, который хотя бы окно открывает:
var objShell = new ActiveXObject("Shell.Application"); objShell.ShellExecute("cmd.exe", " C: cd c:\\pr main.bat blablafile.txt auto", "C:\\WINDOWS\\system32", "open", 1); Ничего лучше придумать не могу. Подскажите, как мне вызвать из javscript’a cmd.exe и заставить его (cmd.exe) выполнить команды C: - пойти на диск cd c:\\pr – перейти в директорию main.bat blablafile.txt auto - запустить процесс main.bat с параметрами blablafile.txt и auto. Мерси. |
Вызвала, предварительно почитав:
IShellDispatch2.ShellExecute( sFile, [ vArguments ], [ vDirectory ], [ vOperation ], [ vShow ]) (sFile, sFile [in] Type: BSTR A String that contains the name of the file on which ShellExecute will perform the action specified by vOperation. [ vArguments ], vArguments [in, optional] Type: Variant A string that contains parameter values for the operation. [ vDirectory ], vDirectory [in, optional] Type: Variant The fully qualified path of the directory that contains the file specified by sFile. If this parameter is not specified, the current working directory is used. [ vOperation ], vOperation [in, optional] Type: Variant The operation to be performed. This value is set to one of the verb strings that is supported by the file. For a discussion of verbs, see the Remarks section. If this parameter is not specified, the default operation is performed. [ vShow ] vShow [in, optional] Type: Variant ) Теперь бы понять как javascript'у дождаться выполнения внешнего приложения? |
Если бат файл простой тоесть там нет диалога с пользователем и надо просто тупо запустить его с параметрами и подождать пока он отработает то подойдет и такой код:
var cmd = new ActiveXObject("WScript.Shell"); //создаем объект шел myApp = cmd.Exec("C:\\pr\\main.bat blablafile.txt auto"); //запускаим бат файл с параметрами while (myApp.Status === 0) //пока наша прога (читай бат файл) работает { WScript.Sleep(100);//пауза что бы не перегружать проц } //читаем со стандартного потока вывода, запущеной проги //все что она написала туда и выводим на экран WScript.StdOut.Write(myApp.StdOut.ReadAll()) //"перенаправляем" поток ошибок проги на нашь поток ошибок WScript.StdErr.Write(myApp.StdErr.ReadAll()) WScript.Echo("Приложение завершилось с кодом: "+myApp.ExitCode) WScript.Sleep(7000); //что бы сразу экран не закрывался (правда могут возникнуть проблемы с кодировкой хз как пофиксить) |
Часовой пояс GMT +3, время: 14:30. |