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.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.
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