2012-04-17 26 views
8

Tôi cố gắng để viết javascript mà nên chạy cmd.exe với một dòng lệnh quy định trong nó như docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/edit này:Làm thế nào để chạy cmd.exe với các thông số từ javascript

tôi chuẩn bị một mã sau khi đọc phương pháp ShellExecute trên 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"); 

nhưng không chèn dòng lệnh trong cmd.exe.

Ai đó có thể giúp tôi không? Cảm ơn bạn trước.

+0

'cd C: 'hầu như không thực hiện bất kỳ nghĩa nào đó,' c: \ 'sẽ là đủ. – kirilloid

Trả lời

6

Có thể bạn chưa cài đặt điều khiển ActiveX này (hoặc đã đăng ký) trong máy tính của mình.

WScript.Shell nên được tìm thấy trong tất cả các Windows:

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

Nếu có khoảng trống trong commands to run, bạn cần phải sử dụng dấu ngoặc kép.

Sửa

Nội dung dưới đây chủ yếu là từ MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx

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

Chúng ta hãy [vDirectory]. Tài liệu hướng dẫn nói: "Đầy đủ điều kiện path of the directory có chứa tệp được chỉ định bởi sFile. Nếu tham số này không được chỉ định, thư mục làm việc hiện tại được sử dụng."

Điều này có nghĩa là bạn có đường dẫn không hợp lệ cho đối số này (có .cmd.exe ở cuối nó). Ngoài ra tất cả các ví dụ để tạo ActiveX giống như sau:

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

Lưu ý chữ thường trong "shell.application".

Và May12, cảm ơn vì đã hỏi điều này. Tôi không biết về điều khiển ActiveX này trước đây, nó có vẻ rất hữu ích đối với tôi.

EDIT II

Nhưng bạn đã hiểu nó? Ví dụ của bạn hoạt động hoàn hảo trong ứng dụng của tôi:

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

Với ba trường hợp ngoại lệ:

1) Người tôi đã đề cập ở đầu câu trả lời này về con đường

2) Escaped \ sử dụng cũng trong lập luận.

3) Đối số cuối cùng là loại số, không phải là một chuỗi.

+0

xin lỗi vì tiếng anh của tôi. tôi sẽ cố gắng giải thích một lần nữa: tôi có một mã - 'var shell = WScript.CreateObject ("WScript.Shell"); shell.Run ("C: \\ WINDOWS \\ system32 \\ cmd.exe "); ' kết quả là tôi nhận được một cửa sổ dos mở với chuỗi: _Microsoft Windows [Phiên bản 5.2.3790] (C) Copyright 1985-2003 Microsoft Corp C: \ Bats> _ Tôi cần một cái gì đó như: _C: \ cd c: \ ext_file C : \ EXT_FILE> main.exe test.txt _ – May12

+0

Hmm ... Phương thức 'Run' chạy lệnh' để chạy' thẳng trong CMD, bạn không nên gọi 'cmd.exe' trong chuỗi đó, chỉ các lệnh bạn muốn để thực hiện trong CMD, giống như bạn chỉ cần viết chúng trong dòng lệnh – Teemu

+0

Teemu, tôi đã nhìn thấy sách hướng dẫn này nhưng nó không giúp tôi. Cuối cùng tôi cần cửa sổ như vậy https://docs.google.com/file/d/0B7QHCoQDlEvKWUZSX3oxUDI2SDg/chỉnh sửa – 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"); 

là có thể sử dụng

Các vấn đề liên quan