5
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi đang cố gắng chạy một tệp Bat bằng JavaScript. Tôi đã thử sử dụng PowerShell nhưng dường như nó không hoạt động đúng. Đây là mã tôi đã thử:
var oShell = WScript.CreateObject["WScript.Shell"];
oShell.Exec["D:"];
oShell.Exec["cd dir"];
oShell.Exec["start user.bat"];
Tôi cũng đã thử điều đó:
var oShell = WScript.CreateObject["WScript.Shell"];
oShell.Exec["start D:\dir\user.bat"];
Đôi khi nó chạy, đôi khi tôi nhận được những lỗi đó "DIADECIMAL Digit dự kiến", "Truy cập bị từ chối". Tôi thực sự bối rối. Tất cả những gì tôi đang cố gắng làm là thực thi một tệp BAT từ tệp JavaScript.
Bất cứ ai có bất kỳ ý tưởng làm thế nào để làm điều đó? Cảm ơn bạn!
Bill_Stewart
21.6K4 Huy hiệu vàng47 Huy hiệu bạc60 Huy hiệu Đồng4 gold badges47 silver badges60 bronze badges
Đã hỏi ngày 23 tháng 3 năm 2017 lúc 20:04Mar 23, 2017 at 20:04
Đầu tiên, JavaScript không có bất kỳ dịch vụ hệ điều hành nào. Vì vậy, bạn thực sự đang đề cập đến một tập lệnh Windows Script [WSH] tình cờ được viết bằng JavaScript.
Thứ hai, start
không phải là một lệnh thực thi mà là một lệnh được xây dựng thành cmd.exe
.
Với sự nhầm lẫn ngoài đường, có vẻ như bạn muốn thực thi tập lệnh shell [tệp hàng loạt] từ tập lệnh WSH. Cách đơn giản nhất là như thế này [điều này có phần gần với những gì bạn đã thử rồi]:
var wshShell = new ActiveXObject["WScript.Shell"];
wshShell.Run["D:\\dir\\user.bat"];
Để tạo tham chiếu đối tượng WshShell
COM [Progid WScript.Shell
], hãy sử dụng từ khóa new
và trình xây dựng ActiveXObject
. Ngoài ra, bạn cần tăng gấp đôi dấu gạch chéo ngược của mình [____10] trong các chuỗi JavaScript vì
var oShell = WScript.CreateObject["WScript.Shell"];
oShell.Exec["start D:\dir\user.bat"];
0 thoát khỏi các ký tự trong chuỗi JavaScript.Đã trả lời ngày 23 tháng 3 năm 2017 lúc 20:16Mar 23, 2017 at 20:16
Bill_StewartBill_StewartBill_Stewart
21.6K4 Huy hiệu vàng47 Huy hiệu bạc60 Huy hiệu Đồng4 gold badges47 silver badges60 bronze badges
4
Đã hỏi ngày 23 tháng 3 năm 2017 lúc 20:04
var runnableScript = exec['path_to.bat',
[error, stdout, stderr] => {
console.log[stdout];
console.log[stderr];
if [error !== null] {
console.log[`exec error: ${error}`];
}
}];
Đầu tiên, JavaScript không có bất kỳ dịch vụ hệ điều hành nào. Vì vậy, bạn thực sự đang đề cập đến một tập lệnh Windows Script [WSH] tình cờ được viết bằng JavaScript.Oct 6, 2019 at 15:38
1
Xin chào Somesh,
Điều này là không thể. Vì lý do bảo mật, trình duyệt web không thể chạy tệp trên máy tính cục bộ. Hãy tưởng tượng nếu điều đó là có thể, một trang web độc hại có thể chiếm lấy máy tính của bạn!
Xin chào Somesh,
Điều này là không thể. Vì lý do bảo mật, trình duyệt web không thể chạy tệp trên máy tính cục bộ. Hãy tưởng tượng nếu điều đó là có thể, một trang web độc hại có thể chiếm lấy máy tính của bạn!
Tôi nghĩ rằng bất cứ điều gì bạn đang lên kế hoạch là không lý tưởng! [vì tất cả các Kilian đã nói]
Nhưng nếu điều này rất quan trọng cho sự thành công của một dự án của tôi, có lẽ tôi sẽ thử thực hiện một số điều khiển ActiveX và thậm chí điều này sẽ chỉ hoạt động trong Internet Explorer [ngay cả Edge sẽ không chạy chúng].
Nhân Viên
Xếp hạng: #549
Một lần nữa, không lý tưởng- nhưng một giải pháp:
Xin chào Somesh,
Điều này là không thể. Vì lý do bảo mật, trình duyệt web không thể chạy tệp trên máy tính cục bộ. Hãy tưởng tượng nếu điều đó là có thể, một trang web độc hại có thể chiếm lấy máy tính của bạn!
Tôi nghĩ rằng bất cứ điều gì bạn đang lên kế hoạch là không lý tưởng! [vì tất cả các Kilian đã nói]
Nhưng nếu điều này rất quan trọng cho sự thành công của một dự án của tôi, có lẽ tôi sẽ thử thực hiện một số điều khiển ActiveX và thậm chí điều này sẽ chỉ hoạt động trong Internet Explorer [ngay cả Edge sẽ không chạy chúng].
Hi vọng điêu nay co ich!
Nhân Viên
Xếp hạng: #549
Một lần nữa, không lý tưởng- nhưng một giải pháp:
Bạn có thể lưu trữ BAT hoặc một exe nhỏ dưới dạng tài nguyên trong ứng dụng của bạn và nút mà người dùng nhấp sẽ tải xuống? Sau đó, tất cả những gì họ sẽ phải làm là mở Exe hoặc Bat đã tải xuống để chạy [một hoặc hai lần nhấp thêm?]
function myFunction[]{
WshShell = new ActiveXObject["Wscript.Shell"]; //Create WScript Object
WshShell.run["d://temp/testJS.bat"]; // Please change the path and file name with your relevant available path in client system. This code can be used to execute .exe file as well
}
Tôi có ý này!
Hãy thử giải pháp sau để thực thi tệp BAT bằng ActiveX chỉ trên IE,