2012-04-17 19 views
8

Próbuję napisać skrypt, który powinien uruchomić cmd.exe z określonej linii poleceń w tym tak docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit:Jak uruchomić cmd.exe z parametrów z JavaScript

przygotować kod po przeczytaniu metodę ShellExecute na Microsoft site:

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

, ale nie wstawia wiersza polecenia w cmd.exe.

Czy ktoś może mi pomóc? Z góry dziękuję.

+0

'cd C:' prawie żadnego sensu, 'c: \' wystarczy. – kirilloid

Odpowiedz

6

Może nie masz zainstalowanego (lub zarejestrowanego) kontrolka ActiveX na swoim komputerze.

WScript.Shell powinno się znaleźć w każdym systemie Windows:

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

Jeśli istnieją przestrzenie w commands to run, trzeba użyć cudzysłowia.

Edit

Zawartość poniżej jest głównie z MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx

iRetVal = Shell.ShellExecute(
    sFile, 
    [ vArguments ], 
    [ vDirectory ], 
    [ vOperation ], 
    [ vShow ] 
) 

Weźmy [vDirectory]. Dokumentacja mówi: "W pełni kwalifikowany path of the directory, który zawiera plik określony przez sFile .Jeśli ten parametr nie jest określony, używany jest bieżący katalog roboczy."

Oznacza to, że dla tego argumentu istnieje niepoprawna ścieżka (mająca na końcu .cmd.exe). Również wszystkie przykłady tworzenia ActiveX są tak:

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

Zwróć uwagę na małe litery w "shell.application".

I 12 maja, dziękuję za pytanie. Nie wiedziałem wcześniej o tej kontroli ActiveX, wydaje mi się to bardzo przydatne.

EDIT II

Ale czy to rozumieć? Twój przykład działa idealnie w moim app:

objShell.ShellExecute("cmd.exe", "cd C: C:\\cd c:\\ext_file main.exe test.txt", "C:\\WINDOWS\\system32", "open", 1); 

z trzema wyjątkami:

1) jeden wspomniałem na początku tej odpowiedzi o ścieżce

2) uciekł \ używane również w argumentach.

3) Ostatnim argumentem jest typ liczby, a nie ciąg.

+0

Przepraszam za mój angielski. Spróbuję wyjaśnić jeszcze raz: mam kod - "var shell = WScript.CreateObject (" WScript.Shell "); shell.Run ("C: \\ WINDOWS \\ system32 \\ cmd.exe "); w rezultacie otrzymuję otwarte okno dos z ciągiem: _Microsoft Windows [wersja 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp. C: \ Bats> _ Potrzebuję czegoś takiego: _C: \ cd c: \ ext_file C : \ EXT_FILE> main.exe test.txt _ – May12

+0

Hmm ... Że 'Run'-method uruchamia' polecenia do uruchomienia' prosto w CMD, nie powinieneś wywoływać 'cmd.exe' w tym łańcuchu, tylko te polecenia, które chcesz do wykonania w CMD, tak jak napisałeś je po prostu w linii poleceń – Teemu

+0

Teemu, widziałem ten podręcznik, ale to mi nie pomaga.W końcu potrzebuję tego okna 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"); 

nadaje

Powiązane problemy