2012-04-17 345 views
8

estoy tratando de escribir javascript que debe ejecutar cmd.exe con una línea de comando especificado en ella como esta docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit:Cómo ejecutar cmd.exe con los parámetros de JavaScript

preparo un código después de leer método shellexecute de Microsoft sitio:

var objShell = new ActiveXObject("Shell.Application"); 
     objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1"); 

pero no inserta la línea de comando en cmd.exe.

¿Alguien podría ayudarme? Gracias de antemano.

+0

'cd C:' casi no tiene ningún sentido, 'c: \ 'sería suficiente. – kirilloid

Respuesta

6

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.

+0

lo siento por mi inglés. Trataré de explicar una vez más: tengo un código: 'var shell = WScript.CreateObject ("WScript.Shell"); shell.Run ("C: \\ WINDOWS \\ system32 \\ cmd.exe");' como resultado, recibo una ventana de DOS abierta con cadena: _Microsoft Windows [Versión 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C: \ Bats> _ Necesito algo como: _C: \ cd c: \ ext_file C : \ EXT_FILE> main.exe test.txt _ – May12

+0

Hmm ... Ese 'método Run' ejecuta' comandos para ejecutar' directamente en CMD, no debe llamar 'cmd.exe' en esa cadena, solo los comandos que desea para ejecutar en CMD, como lo acabas de escribir en la línea de comandos. – Teemu

+0

Teemu, he visto este manual. Pero no me ayuda. Eventualmente necesito una ventana como esa https://docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit – May12

-2
var objShell = new ActiveXObject("Shell.Application"); 
objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1"); 

es utilizable

Cuestiones relacionadas