Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вызов cmd.exe c параметрами из JavaScript'a (https://javascript.ru/forum/misc/27574-vyzov-cmd-exe-c-parametrami-iz-javascript%27.html)

Майя 17.04.2012 19:01

Вызов 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. Мерси.

Майя 18.04.2012 19:12

Вызвала, предварительно почитав:
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'у дождаться выполнения внешнего приложения?

Mixxx 19.04.2012 15:03

Если бат файл простой тоесть там нет диалога с пользователем и надо просто тупо запустить его с параметрами и подождать пока он отработает то подойдет и такой код:

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.