Quizás no tenga este control ActiveX instalado (o registrado) en su computadora.
WScript.Shell
debería hallarse en todos los de Windows:
var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");
Si hay espacios en commands to run
, es necesario utilizar comillas dobles.
Editar
El contenido de abajo es principalmente de MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx
iRetVal = Shell.ShellExecute(
sFile,
[ vArguments ],
[ vDirectory ],
[ vOperation ],
[ vShow ]
)
Tomemos [vDirectory]
. La documentación dice: "El totalmente calificado path of the directory
que contiene el archivo especificado por sFile. Si no se especifica este parámetro, se utiliza el directorio de trabajo actual".
Esto significa que tiene una ruta no válida para este argumento (que tiene .cmd.exe
al final). Asimismo, todos los ejemplos para crear el ActiveX son así:
var objShell = new ActiveXObject("shell.application");
Aviso la minúscula en "shell.application"
.
Y 12 de mayo, gracias por preguntar esto. No sabía sobre este control ActiveX antes, parece ser muy útil para mí.
EDITAR II
Pero has entendido? Su ejemplo funciona perfecto en mi aplicación:
objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1);
con tres excepciones:
1) La que he mencionado al principio de esta respuesta sobre el camino
2) Escapado \
utilizado también en los argumentos.
3) El último argumento es el tipo de número, no una cadena.
'cd C:' casi no tiene ningún sentido, 'c: \ 'sería suficiente. – kirilloid