Como executar cmd.exe com parâmetros de javascript

estou a tentar escrever javascript que deve executar cmd.exe com uma linha de comandos indicada nele como este docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit:

eu preparo um código após ler o método shellexecute no site da microsoft:

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

mas não insere linha de comandos no cmd.exe.

Alguém me pode ajudar? Obrigado antecipadamente.

Author: May12, 2012-04-17

2 answers

Talvez não tenha este controlo ActiveX instalado (ou registado) no seu computador.

WScript.Shell deve ser encontrado em todas as janelas:

var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");

Se houver espaços em commands to run, terá de usar aspas duplas.

Editar

O conteúdo abaixo é 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 ]
)
Vamos tomar. A documentação diz: "Os plenamente qualificados path of the directory que contém o ficheiro especificado pelo sFile. Se este parâmetro não for especificado, o diretório de trabalho atual é usado."

Isto significa que você tem um caminho inválido para este argumento (tendo .cmd.exe no final dele). Também todos os exemplos para criar o ActiveX são assim:

var objShell = new ActiveXObject("shell.application");

Repara na minúscula em {[[9]}.

E em 12 de Maio, obrigado por perguntarem. Eu não sabia sobre esse controle ActiveX Antes, parece ser muito útil para mim.

Editar II

Mas percebeste? O seu exemplo funciona perfeitamente na minha aplicação:
objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1);

Com três excepções:

O que mencionei no início desta resposta sobre o caminho

2) escapou \ usado também em argumentos.

3) o último argumento é o tipo de Número, Não uma cadeia.

 6
Author: Teemu, 2017-01-23 16:56:46
var objShell = new ActiveXObject("Shell.Application");
objShell.ShellExecute("cmd.exe", "C: cd C:\\pr main.exe blablafile.txt auto", "C:\\WINDOWS\\system32", "open", "1"); 

Pode ser utilizado

 -2
Author: Editor, 2015-01-27 15:04:24